2013-01-12 8 views
0

在MainWindow類控制I具有控制在用戶控件複選框,其設定值位於墊層用戶控件

<CheckBox Content="Show objects ID" Name="showID" IsChecked="False" /> 

之外還有被定義屬性時使用的由許多對象像柵格,列表視圖等屬性複選框,

public Visibility ShowObjectIDasVisibility 
    { 
     get { return showID.IsChecked.Equals(true) ? Visibility.Visible : Visibility.Collapsed; } 
    } 

我有一些更像這樣返回布爾值,寬度取決於應該在目標控件上使用什麼。

我設法綁定位於用戶控件對象使用這個屬性這樣的控制:

<TextBlock Visibility="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=ShowObjectIDasVisibility}" /> 

但它的工作原理唯一的,而創造這個TextBlock的,比我可以切換複選框,很多次我都喜歡,和TextBlock將保持可見或不依賴於第一個值。

我該如何正確地做到這一點?謝謝。

回答

1

相反INotifyPropertyChanged接口,你可以用DependencyProperty

public Visibility ShowObjectIDasVisibility 
    { 
     get { return (Visibility)GetValue(ShowObjectIDasVisibilityProperty); } 
     set { SetValue(ShowObjectIDasVisibilityProperty, value); } 
    } 
    public static readonly DependencyProperty ShowObjectIDasVisibilityProperty = 
     DependencyProperty.Register("ShowObjectIDasVisibility", typeof(Visibility), typeof(MainWindow), new PropertyMetadata(Visibility.Collapsed)); 

現在,顯示/隱藏你的TextBlock您需要更改ShowObjectIDasVisibility值。

例如,您可以通過添加到複選框Click="OnShowID_Click並在後面

private void OnShowID_Click(object sender, RoutedEventArgs e) 
    { 
     ShowObjectIDasVisibility = ShowObjectIDasVisibility == System.Windows.Visibility.Visible ? System.Windows.Visibility.Collapsed : System.Windows.Visibility.Visible; 
    } 
代碼做
0

如果你的綁定是正確的。您只需確保您的代碼類在綁定的類中實現INotifyPropertyChanged接口,並在每個複選框狀態更改中引發RaisePropertyChanged事件。有關更多詳情,請參閱示例here