[英]Can't set default value for ICommand of an DependencyProperty
[英]why can't show the default value of DependencyProperty
我希望文本块显示附加依赖属性的默认值,但它不起作用。
在xml中
<TextBlock Text="{Binding RelativeSource={RelativeSource Self},Path=MyData}"></TextBlock>
依赖属性
public class MyDependencyObject
{
public static readonly DependencyProperty MyDataProperty =
DependencyProperty.RegisterAttached("MyData", typeof(string), typeof(TextBlock),
new FrameworkPropertyMetadata("MyDependencyObject"));
public static string GetMyData(DependencyObject dpo)
{
return (string)dpo.GetValue(MyDataProperty);
}
public static void SetMyData(DependencyObject dpo, string value)
{
dpo.SetValue(MyDataProperty, value);
}
}
当我设置 MyData 的值时,它运行良好。
<TextBlock local:MyDependencyObject.MyData="Test" Text="{Binding RelativeSource={RelativeSource Self}, Path=MyData}" />
绑定到附加属性的数据需要括号中的Path
,请参阅PropertyPath for Objects in Data Binding :
<TextBlock Text="{Binding RelativeSource={RelativeSource Self},
Path=(local:MyDependencyObject.MyData)}"/>
附加属性声明必须使用声明类作为RegisterAttached的ownerType
参数
public class MyDependencyObject
{
public static readonly DependencyProperty MyDataProperty =
DependencyProperty.RegisterAttached(
"MyData",
typeof(string),
typeof(MyDependencyObject), // here
new FrameworkPropertyMetadata("MyDependencyObject"));
public static string GetMyData(DependencyObject obj)
{
return (string)obj.GetValue(MyDataProperty);
}
public static void SetMyData(DependencyObject obj, string value)
{
obj.SetValue(MyDataProperty, value);
}
}
尽管从未在 TextBlock 上显式设置附加属性,但它将显示“MyDependencyObject”默认值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.