我创建了一个带有依赖项属性的行为类,我希望将其附加到视图中的控件(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属性的任何想法都不起作用?
答案 0 :(得分:1)
您希望附加行为做什么?
您是否通过在GetSomeString
/ SetSomeString
方法上设置断点来确定附加属性是否正常工作?如果是这样的话,这将无法使用绑定,因为在使用绑定时不会调用Get / Set方法。
如果您想在附加属性发生变化时做出反应,无论是否通过绑定,请使用PropertyChangedCallback
调用中指定的PropertyMetadata
的{{1}}。