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'方法只是讓您的代碼更容易訪問該屬性的常用模式。平臺只是在綁定時設置值。 –