未通过UWP中的绑定设置附加的行为属性

本文关键字:属性 设置 绑定 UWP | 更新日期: 2023-09-27 18:17:01

我创建了一个带有依赖属性的行为类,我想将其附加到视图(XAML)中的控件上。我正在使用MVVM,我需要通过将其绑定到我的ViewModel中的属性来设置此附加属性,但它没有设置。下面是我想要做的一个简化版本:

行为类:

public static class TestBehavior
{
    public static readonly DependencyProperty SomeStringProperty =
        DependencyProperty.Register("SomeString", typeof(string), typeof(TestBehavior), new PropertyMetadata(""));
    public static string GetSomeString(DependencyObject o)
    {
        return (string)o.GetValue(SomeStringProperty);
    }
    public static void SetSomeString(DependencyObject o, string value)
    {
        o.SetValue(SomeStringProperty, value);
    }
}

XAML:

<TextBlock Text="{Binding ViewModelProperty}" local:TestBehavior.SomeString="{Binding ViewModelProperty}" />

TextBlock的"Text"属性绑定正确,但行为的"SomeString"属性绑定不正确。

有趣的是-如果我"硬编码"的行为属性的值,它确实得到设置。例如:
<TextBlock Text="{Binding TestValue}" local:TestBehavior.SomeString="Foo" /> <!-- This Works --> 

你知道为什么绑定到行为属性不工作吗?

未通过UWP中的绑定设置附加的行为属性

您期望附加的行为做什么?

你是否通过在GetSomeString/SetSomeString方法上设置断点来确定附加的属性是/不工作?如果是这样,这将无法与绑定一起工作,因为在使用绑定时不会调用Get/Set方法。

如果你想在附加属性改变时做出反应,不管它是否通过绑定,然后使用Register调用中指定的PropertyMetadataPropertyChangedCallback