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

本文关键字:添加 图像 控件 用户 | 更新日期: 2023-09-27 18:18:29

我试图有一个用户控件,其中图像是从其包含元素传入的。这样做的目的是,我可以重用一组常见的视觉元素,而只改变图像。例如:

控件用法:

<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());

我相信我在这个过程中遗漏了一些东西,所以任何帮助都将是感激的。

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

您可能希望通过RelativeSourceElementName绑定:

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

(不要设置DataContext,它将从外部不可见,并与用于继承DataContext的绑定混淆)

在我看来是正确的,你是收到错误信息还是什么?