解决方案1:
在每个页面中,你只需添加一个触发器来隐藏/显示这样的控件 -
<ComboBox Height="22" Name="comboBox1" />
<Grid>
<Grid.Style>
<Style TargetType="{x:Type Grid}">
<Setter Property="Visibility" Value="Visible"></Setter>
<Style.Triggers>
<DataTrigger
Binding="{Binding ElementName=comboBox1, Path=SelectedItem}"
Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
<Grid.Style>
<!-- Your controls; TextBox, Buttons etc. -->
</Grid>
Run Code Online (Sandbox Code Playgroud)
解决方案2:
如果你想要更复杂的逻辑(比如基于两个组合框,那么你可以创建一个MultiValueConverter并在上面的XAML中使用它来设置VisibilityGrid.
如果在多个窗口中重复使用它,您可以创建一个样式并将其应用于所有Windows中的网格.
解决方案3:
建议使用ethicallogics创建一个公共ViewModel.
如果您使用ViewModel approch,那么就不需要拥有Visibility属性,只需SelectedItem在触发器或转换器中使用该属性; 即使你想创建一个seaprate属性,我建议你把它变成Boolean类型并在XAML中使用它.
您可以在所有三种情况下创建一个共同样式,并在所有窗口中重复使用它.