Я создал класс поведения с свойством зависимости, которое я хочу привязать к элементу управления в своем представлении (XAML). Я использую MVVM, и мне нужно установить это вложенное свойство, привязав его к свойству в моей модели ViewModel, но оно не устанавливается. Вот упрощенная версия того, что я хочу сделать:Свойство Attached Behavior не установлено привязкой в 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 правильно связывает, но свойство «SomeString» поведения не имеет.
Интересно - если я «жестко закодирую» свойство поведения значение, которое оно получает. Например:
<TextBlock Text="{Binding TestValue}" local:TestBehavior.SomeString="Foo" /> <!-- This Works -->
Любые идеи, почему привязка к свойству поведения не работает?
Это точно, что я сделал (используя точки останова). Я добавил метод обратного вызова и выполнил его при привязке. Любая идея, почему методы Get/Set не выполняются при использовании привязок? –
Это именно то, как привязывающая инфраструктура работает с зависимыми свойствами (обычными или прикрепленными). Я считаю, что это некоторая форма внутренней оптимизации. – ibebbs
Я также считаю, что метод GetSomeString является всего лишь распространенным шаблоном для упрощения доступа вашего кода к свойству. Платформа просто устанавливает значения при привязке. –