Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何向WPF中的图像添加依赖项属性?_C#_Wpf_Dependency Properties - Fatal编程技术网

C# 如何向WPF中的图像添加依赖项属性?

C# 如何向WPF中的图像添加依赖项属性?,c#,wpf,dependency-properties,C#,Wpf,Dependency Properties,如何将名为“权重”的属性添加到图像中并像这样使用它: 我的体重 (假设我已经在XAML中定义了myImage) 这是我的密码: public partial class MainWindow : Window { public double Weight { get { return (double)GetValue(WeightProperty); } set {

如何将名为“权重”的属性添加到图像中并像这样使用它:

我的体重

(假设我已经在XAML中定义了myImage)

这是我的密码:

public partial class MainWindow : Window
{
    public double Weight
    {
        get
        {
            return (double)GetValue(WeightProperty);
        }
        set
        {
            SetValue(WeightProperty, value);
        }
    }
    public static readonly DependencyProperty WeightProperty = DependencyProperty.Register("Weight", typeof(Double), typeof(Image));


    public MainWindow()
    {
        this.InitializeComponent();
                    myImage.Weight = 2;'
这里最后一行不起作用,因为属性权重未附加到myImage

以下内容在XAML中也不起作用:

<Image x:Name="myImage" Weight="2" />

您需要创建一个附加属性:

public static double GetWeight(DependencyObject obj)
        {
            return (double)obj.GetValue(WeightProperty);
        }

        public static void SetWeight(DependencyObject obj, double value)
        {
            obj.SetValue(WeightProperty, value);
        }

        public static readonly DependencyProperty WeightProperty =
            Dependenc**strong text**yProperty.RegisterAttached("Weight", typeof(double), typeof(MainWindow));
然后,您可以在XAML中使用它,如下所示:

<Image x:Name="myImage" MainWindow.Weight="2" />

我建议只继承Image类并添加新的依赖属性

例如

然后在XAML代码中,使用此本地命名空间:

xmlns:local="clr-namespace:[LIBRARYNAME]"
您可以使用:

<local:MyImage Weight="10.0"/>


它有点笨重,但我认为它给了你最多的控制权。

我很好奇为什么-1?无论是谁否决了它,原因是什么?当团队中的其他人创建了一个具有属性“AspectRatio”的TheirImage类时会发生什么?如果您需要向Panel类添加一些功能,该类已经被Grid、DockPanel、StackPanel等子类化了,该怎么办?这就是为什么组合通常比继承好的原因,WPF使组合变得非常强大和简单,附带属性。尽管如此,我们还没有听到任何关于团队或其他方面的问题。如果你在一个类上只有一个属性,那么这个问题的答案是正确的。谢谢你的回答。这两点都是有效的,“Inherantance”最适合我的情况,因为制作一种新类型的图像(ImageWithWeight)使它在我的应用程序中使用时更加明显,它现在具有权重属性,并且与普通图像不同。
xmlns:local="clr-namespace:[LIBRARYNAME]"
<local:MyImage Weight="10.0"/>