TidBit:这只能在XAML中完成,没有C#,因为我无法访问它。
我有一个困境,我在表单上有一个网格(主网格控制所有其他控件),其风格根据用户启用/禁用内容。现在,我添加了一个具有取决于它的样式的复选框,它将隐藏/显示一个组框。我的问题是,虽然应用了初始设置器,但这种风格不会触发:
<Style x:Key="StatusVisibility">
<Setter Property="Control.Visibility" Value="Hidden"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Source={StaticResource Dsource}, Path=Value.Properties[chkbox1].Value}" Value="Y">
<Setter Property="Control.Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
所以在这种情况下,可见性将被设置为隐藏,我将无法看到它,如果我在这里翻转了设置者(最初可见性是可见的),它将显示组框。
为了使事情更加奇怪,这个复选框被设置为一个数据库,以便if是“Y”或“N”设置可见性:
<CheckBox Grid.Row="0" Grid.Column="0" Margin="2,0,2,0" VerticalContentAlignment="Center" Name="ckbox1" HorizontalAlignment="Left" Width="Auto" MinWidth="100"
IsChecked="{Binding Source={StaticResource Dsource}, Path=Value.Properties[ckbox1].Value,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Content = "Display ?"/>
这是我要设置的组框:
<GroupBox Header="GroupBox" Name="GroupBox" VerticalAlignment="Top" ClipToBounds="False" Margin="2,0,2,0" Style="{StaticResource StatusVisibility}">
现在,我要使用的是,在有两个网格的情况下是否需要遵循特定的规则,并且父网格样式会覆盖子网格样式?
另外,如果我希望动态启用/禁用此子组框,我是否需要做一些特别的事情?
由于
答案 0 :(得分:1)
如果您没有访问代码,则可以通过将GroupBox.Visibility
绑定到CheckBox.IsChecked
媒体资源,在xaml中完成所有操作:
<StackPanel>
<GroupBox Visibility="{Binding ElementName=MyCheckbox, Path=IsChecked, Converter={VisibilityConverter}}"/>
<CheckBox x:Name="MyCheckbox" />
</StackPanel>
这将要求您制作一个VisibilityConverter(一个简单的谷歌搜索)。然后,您可以删除DataTrigger
。