Я создаю DataTemplate в коде и не могу использовать XAML. :(
Мне удалось создать изображение внутри шаблона, но только если я жестко задал путь к файлу ico. Я хотел бы иметь возможность привязать эту строку к элементу (я использую DataTemplate в модифицированном ListView).
Вот мой код прямо сейчас:
private DataTemplate CreateDataTemplate(string binding, HorizontalAlignment alignment, bool active, bool useIcon)
{
DataTemplate dt = new DataTemplate();
FrameworkElementFactory sp = new FrameworkElementFactory(typeof(StackPanel));
sp.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);
if (useIcon)
{
double size = 14.0;
BitmapImage bmp = new BitmapImage(new Uri("MyIcon.ico", UriKind.RelativeOrAbsolute));
FrameworkElementFactory icon = new FrameworkElementFactory(typeof(Image));
icon.SetValue(Image.SourceProperty, bmp);
icon.SetValue(Image.WidthProperty, size);
icon.SetValue(Image.HeightProperty, size);
icon.SetValue(Image.MarginProperty, new Thickness(0, 0, 5, 0));
sp.AppendChild(icon);
}
FrameworkElementFactory tb = new FrameworkElementFactory(typeof(TextBlock));
tb.SetBinding(TextBlock.TextProperty, new Binding(binding));
tb.SetValue(TextBlock.ForegroundProperty, (active ? Brushes.Black : Brushes.Gray));
tb.SetValue(TextBlock.TextTrimmingProperty, TextTrimming.CharacterEllipsis);
tb.SetValue(TextBlock.HorizontalAlignmentProperty, alignment);
sp.AppendChild(tb);
dt.VisualTree = sp;
return dt;
}
Спасибо!
FrameworkElementFactories
, симпатичного котенка убивают. (Не могли бы вы объяснить мне, почему вы не можете использовать XAML?) - person H.B.   schedule 07.06.2011