Я новичок в этом. Я пытаюсь создать собственный элемент управления в WPF, который будет отображать изображение и фрагмент текста под ним. Я загружаю изображение с URL-адреса как тип BitmapImage. У меня есть в моем пользовательском интерфейсе, чтобы проверить, правильно ли он загружается, и это так. Он загружается и отображается в , но в пользовательском элементе управления свойство зависимостей Icon просто отображает URL-адрес (который, как я предполагаю, является ToString() того, что он видит).
Вот как это выглядит с работающим полем СЛЕВА, которое я использую только для подтверждения того, что изображение поступает правильно, и неисправным GameIconControl справа:
http://i.imgur.com/heLcUMc.png
Вот Generic.xaml для элемента управления
<Style TargetType="{x:Type assets:GameIconControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type assets:GameIconControl}">
<Border Background="Transparent"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<StackPanel HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Vertical">
<ContentPresenter Height="Auto"
Margin="3"
ContentSource="Icon"
HorizontalAlignment="Center"/>
<ContentPresenter Height="Auto"
Margin="3"
ContentSource="GameName"
HorizontalAlignment="Center"/>
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
А вот C# в GameIconControl.cs
public class GameIconControl : Control
{
static GameIconControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(GameIconControl), new FrameworkPropertyMetadata(typeof(GameIconControl)));
}
public GameIconControl(){}
public GameIconControl(string name, BitmapImage icon)
{
Icon = icon;
GameName = name;
}
public const string IconPropertyName = "Icon";
public const string GameNamePropertyName = "GameName";
public string GameName
{
get { return (string)GetValue(GameNameProperty); }
set { SetValue(GameNameProperty, value); }
}
public static readonly DependencyProperty GameNameProperty =
DependencyProperty.Register(GameNamePropertyName, typeof(string), typeof(GameIconControl), new UIPropertyMetadata(default(string)));
public BitmapImage Icon
{
get { return (BitmapImage)GetValue(IconProperty); }
set { SetValue(IconProperty, value); }
}
public static readonly DependencyProperty IconProperty =
DependencyProperty.Register(IconPropertyName, typeof(BitmapImage), typeof(GameIconControl), new PropertyMetadata(default(BitmapImage)));
}
Что мне не хватает?