繁体   English   中英

为什么无法显示 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)}"/>

附加属性声明必须使用声明类作为RegisterAttachedownerType参数

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM