2013-04-04 63 views
0

Blacklight是一組較舊的WPF控件和樣式。代碼可以在here找到。它包含一個名爲AnimatedExpander控制這是不是一個真正的擴展,而它只是實現HeaderedContentControl並增加了一個IsExpandedProperty dprop:無法綁定到擴展器上的IsExpanded

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。 – 2013-04-04 17:12:25

+0

感謝您的關注。代碼在鏈接處可用,並且可以通過簡單地將示例AnimatedExpanders中的一個綁定到虛擬視圖模型來進行測試。 由於我提到的工作不好,我不能浪費大量時間尋找一個好的解決方案。我會盡量在週末回來尋找一個純粹的MVVM解決方案。 – JoeB 2013-04-04 18:10:12

+0

沒錯。我幾乎可以肯定,你遇到的問題是由於該控件的不好實現。 – 2013-04-04 18:14:37

回答

0

一個壞的解決方案:

我能夠通過一個事件連接到切換按鈕點擊並查看「發件人」的內容,使這項工作和值器isChecked更新我的視圖模型。