2013-04-04 2 views
0

Blacklight - это старый набор элементов управления и стилей WPF. Код может быть найден here. Он содержит элемент управления под названием AnimatedExpander, который не является действительно расширитель, а он просто реализует HeaderedContentControl и добавляет DPROP IsExpandedProperty:Невозможно связать с IsExpanded на Expander

public static readonly DependencyProperty IsExpandedProperty = 
     DependencyProperty.Register("IsExpanded", typeof(bool), typeof(AnimatedExpander), new PropertyMetadata(true)); 

    public bool IsExpanded 
    { 
     get 
     { 
      if (this.expandToggleButton != null) 
      { 
       return this.expandToggleButton.IsChecked.Value; 
      } 

      return (bool)GetValue(IsExpandedProperty); 
     } 

     set 
     { 
      SetValue(IsExpandedProperty, value); 
     } 
    } 

мне нужно привязать к IsExpanded, так что я может сохраняться ли расширены расширители. Я уверен, что правильно настроил привязку, и что существует проблема с этим пользовательским свойством зависимостей. Если я открою представление в Snoop и установлю IsExpanded = True на расширителе, это будет работать. Тем не менее, просто нажав кнопку expandToggleButton на элементе управления, только расширяется элемент управления, он не попадает в мою привязку.

<controls:AnimatedExpander IsExpanded="{Binding SGGExpanderExpanded}" /> 

    private bool _sGGExpanderExpanded; 
    public bool SGGExpanderExpanded 
    { 
     get { return _sGGExpanderExpanded; } 
     set 
     { 
      if (_sGGExpanderExpanded != value) 
      { 
       _sGGExpanderExpanded = value; 
       OnPropertyChanged("SGGExpanderExpanded"); 
      } 
     } 
    } 

Как можно привязать к значению, которое изменяется, когда пользователь нажимает на кнопку переключателя, который подключается расширить контроль?

+0

опубликовать полный код и XAML этого элемента управления. –

+0

Спасибо за интерес. Код доступен по ссылке и может быть протестирован путем простого привязки одного из примеров AnimatedExpanders к манекену viewmodel. Поскольку у меня плохое решение, о котором я упоминал, я не могу позволить себе потратить кучу времени на поиски хорошего решения прямо сейчас. Я попытаюсь вернуться в выходные, чтобы найти чистое решение MVVM. – JoeB

+0

правый. Я почти уверен, что проблема, с которой вы столкнулись, связана с плохой реализацией этого элемента управления. –

ответ

0

Плохое решение:

Я был в состоянии сделать эту работу путем присоединения события к ToggleButton нажмите и глядя на «отправитель» Материалы и IsChecked значения обновить мой ViewModel.