C# 如何向WPF中的图像添加依赖项属性?
如何将名为“权重”的属性添加到图像中并像这样使用它: 我的体重 (假设我已经在XAML中定义了myImage) 这是我的密码: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 {
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"/>