0
我创建了一个具有依赖项属性的行为类,我想将其附加到视图中的控件(XAML)中。我正在使用MVVM,我需要通过将它绑定到ViewModel中的属性来设置此附加属性,但它不会被设置。这里是什么,我想要做一个简化版本:未在UWP中通过绑定设置附加行为属性
行为等级:
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 -->
任何想法,为什么绑定到行为属性不起作用?
这正是我所做的(使用断点)。我添加了回调方法,并且它在绑定上执行。任何想法为什么Get/Set方法在使用绑定时没有被执行? –
这只是绑定基础结构与依赖项属性(正常或附加)一起工作的方式。我相信这是某种形式的内部优化。 – ibebbs
我也相信'GetSomeString'方法只是让您的代码更容易访问该属性的常用模式。平台只是在绑定时设置值。 –