Wpf 主窗口中的复选框,用于设置位于参考底图UserControls上的控件的值
在MainWindow类中,我有一个复选框,用于控制UserControls中许多对象(如网格、ListView等)使用的属性Wpf 主窗口中的复选框,用于设置位于参考底图UserControls上的控件的值,wpf,mvvm,binding,checkbox,mainwindow,Wpf,Mvvm,Binding,Checkbox,Mainwindow,在MainWindow类中,我有一个复选框,用于控制UserControls中许多对象(如网格、ListView等)使用的属性 <CheckBox Content="Show objects ID" Name="showID" IsChecked="False" /> 我有一些类似的方法来返回布尔值,宽度取决于目标控件上应该使用什么 我设法绑定位于UserControl对象中的控件以使用此属性,如下所示: <TextBlock Visibility="{Binding
<CheckBox Content="Show objects ID" Name="showID" IsChecked="False" />
我有一些类似的方法来返回布尔值,宽度取决于目标控件上应该使用什么
我设法绑定位于UserControl对象中的控件以使用此属性,如下所示:
<TextBlock Visibility="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=ShowObjectIDasVisibility}" />
但在创建这个文本块时,它只对一个复选框起作用,我可以随意多次切换复选框,并且文本块将保持可见或不可见,这取决于第一个值
我应该如何正确地做到这一点?谢谢。如果您的装订正确的话。您只需要确保代码类在绑定到视图的类中实现INotifyPropertyChanged接口,并且在每个复选框状态更改中引发RaisePropertyChanged事件。有关更多详细信息,请查看示例。您可以使用
DependencyProperty
而不是INotifyPropertyChanged
界面:
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
,您需要更改showObjectisVisibility
值
例如,您可以通过添加到复选框Click=“OnShowID\u Click
和代码隐藏中来完成此操作
private void OnShowID_Click(object sender, RoutedEventArgs e)
{
ShowObjectIDasVisibility = ShowObjectIDasVisibility == System.Windows.Visibility.Visible ? System.Windows.Visibility.Collapsed : System.Windows.Visibility.Visible;
}
private void OnShowID_Click(object sender, RoutedEventArgs e)
{
ShowObjectIDasVisibility = ShowObjectIDasVisibility == System.Windows.Visibility.Visible ? System.Windows.Visibility.Collapsed : System.Windows.Visibility.Visible;
}