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

时间:2016-11-09 11:49:38

标签: c# mvvm uwp uwp-xaml attachedbehaviors

我创建了一个带有依赖项属性的行为类,我希望将其附加到视图中的控件(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}" />

&#34; Text&#34; TextBlock的属性绑定正确,但是&#34; SomeString&#34;行为的属性没有。

有趣的是 - 如果我&#34;硬编码&#34;行为属性到它确实设置的值。例如:

<TextBlock Text="{Binding TestValue}" local:TestBehavior.SomeString="Foo" /> <!-- This Works --> 

为什么绑定到behavior属性的任何想法都不起作用?

1 个答案:

答案 0 :(得分:1)

您希望附加行为做什么?

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

如果您想在附加属性发生变化时做出反应,无论是否通过绑定,请使用PropertyChangedCallback调用中指定的PropertyMetadata的{​​{1}}。