Как добавить переменную Image в пользовательский элемент управления - PullRequest
0 голосов
/ 20 декабря 2011

Я пытаюсь создать пользовательский элемент управления, в который передается изображение из содержащего его элемента. Цель состоит в том, чтобы я мог повторно использовать общий набор визуальных элементов, изменяя только изображение. Например:

Использование контроля:

<DataTemplate DataType={x:Type myType}>
    <local:MyControl PlotIconSource="..\Images\Scatter.png"/>
</DataTemplate>

Изображение внутри элемента управления

<UserControl x:Class="MyControl">
    <Image Source="{Binding PlotIconSource}"/>
</UserControl>

Наконец, свойство зависимости для PlotIconSource в коде для MyControl.xaml.cs.

    public ImageSource PlotIconSource
    {
        get { return (ImageSource)GetValue(PlotIconSourceProperty); }
        set { SetValue(PlotIconSourceProperty, value); }
    }

    public static readonly DependencyProperty PlotIconSourceProperty =
        DependencyProperty.Register(
            "PlotIconSource", 
            typeof(ImageSource), 
            typeof(PlotHeader), 
            new UIPropertyMetadata());

Я уверен, что что-то пропустил по пути, поэтому любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

Возможно, вы захотите выполнить привязку с помощью RelativeSource или с помощью ElementName:

<UserControl x:Class="MyControl" Name="control">
    <Image Source="{Binding PlotIconSource, ElementName=control}"/>
</UserControl>

(Не устанавливайте DataContext, он будетбыть невидимым извне и связываться с привязками, предназначенными для унаследованных DataContext)

0 голосов
/ 20 декабря 2011

Мне кажется, вы получаете сообщение об ошибке или что-то подобное?

...