未通过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 -->
你知道为什么绑定到行为属性不工作吗?
您期望附加的行为做什么?
你是否通过在GetSomeString
/SetSomeString
方法上设置断点来确定附加的属性是/不工作?如果是这样,这将无法与绑定一起工作,因为在使用绑定时不会调用Get/Set方法。
如果你想在附加属性改变时做出反应,不管它是否通过绑定,然后使用Register
调用中指定的PropertyMetadata
的PropertyChangedCallback
。