如何在用户控件上添加变量图像

时间:2011-12-20 15:15:48

标签: c# wpf xaml user-controls dependency-properties

我正在尝试使用用户控件从其包含元素传入图像。目的是让我可以重复使用一组通用的视觉元素,同时只改变图像。例如:

控制用法:

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

控件内的图像

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

最后,MyControl.xaml.cs代码隐藏中PlotIconSource的依赖属性。

    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 个答案:

答案 0 :(得分:1)

您可能希望通过RelativeSourceElementName

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

(不要设置DataContext,它将从外部隐藏,并且对于继承的DataContext意味着混乱

答案 1 :(得分:0)

看起来对我来说,您收到错误消息还是其他什么?