附加行为 属性 未通过 UWP 中的绑定设置
Attached Behavior property not being set by binding in UWP
我创建了一个具有依赖性 属性 的行为 class,我想将其附加到我认为的控件 (XAML)。我正在使用 MVVM,我需要通过将它绑定到我的 ViewModel 中的 属性 来设置这个附加的 属性,但它没有被设置。这是我想做的事情的简化版本:
行为 Class:
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" 属性 绑定不正确。
有趣的是 - 如果我 "hard code" 将行为 属性 设置为一个值,它就会被设置。例如:
<TextBlock Text="{Binding TestValue}" local:TestBehavior.SomeString="Foo" /> <!-- This Works -->
知道为什么绑定到行为 属性 不起作用吗?
您希望附加的行为做什么?
您是否通过在 GetSomeString
/SetSomeString
方法上设置断点来确定附加的 属性 is/isn 无法正常工作?如果是这样,这将不适用于绑定,因为使用绑定时不会调用 Get/Set 方法。
如果您想在附加的 属性 更改时做出反应,而不管它是否通过绑定,则使用 Register
中指定的 PropertyMetadata
的 PropertyChangedCallback
打电话。
我创建了一个具有依赖性 属性 的行为 class,我想将其附加到我认为的控件 (XAML)。我正在使用 MVVM,我需要通过将它绑定到我的 ViewModel 中的 属性 来设置这个附加的 属性,但它没有被设置。这是我想做的事情的简化版本:
行为 Class:
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" 属性 绑定不正确。
有趣的是 - 如果我 "hard code" 将行为 属性 设置为一个值,它就会被设置。例如:
<TextBlock Text="{Binding TestValue}" local:TestBehavior.SomeString="Foo" /> <!-- This Works -->
知道为什么绑定到行为 属性 不起作用吗?
您希望附加的行为做什么?
您是否通过在 GetSomeString
/SetSomeString
方法上设置断点来确定附加的 属性 is/isn 无法正常工作?如果是这样,这将不适用于绑定,因为使用绑定时不会调用 Get/Set 方法。
如果您想在附加的 属性 更改时做出反应,而不管它是否通过绑定,则使用 Register
中指定的 PropertyMetadata
的 PropertyChangedCallback
打电话。