我有一个groupBox名称" groupbox ".I,希望禁用整个groupbox,包括组框的名称。我正在附上这张照片,我希望它能使情况明朗

<GroupBox Name="groupBox" Grid.Column="0" Grid.Row="1" Margin="2,0,0,0" Header="GroupBox" IsEnabled="False">
<Grid Margin="10,0,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height=".250*"/>
<RowDefinition Height=".250*"/>
</Grid.RowDefinitions>
<RadioButton Name="RadioBtn1" VerticalAlignment="Center" ToolTipService.ShowOnDisabled="True" Grid.ColumnSpan="3" Height="14.63">OP1</RadioButton>
<RadioButton Name="RadioBtn2" Grid.Row="1" VerticalAlignment="Center" ToolTipService.ShowOnDisabled="True" Grid.ColumnSpan="3" Height="14.63">OP2</RadioButton>
</Grid>
</GroupBox>我正在使用IsEnabled="False"属性。但是它只起作用于groupBox的内容(如果我错了,Pls会给我发邮件!)现在我希望圆区域也应该被禁用。
发布于 2013-11-22 11:40:36
在XAML中,一个简单的Trigger可以帮你做到这一点(后面没有任何代码):
<GroupBox Name="groupBox" Grid.Column="0" Grid.Row="1" Margin="2,0,0,0" Header="GroupBox" IsEnabled="False">
<GroupBox.Style>
<Style>
<Style.Triggers>
<Trigger Property="Control.IsEnabled" Value="False">
<Setter Property="Control.Foreground" Value ="#FF6D6D6D" />
</Trigger>
</Style.Triggers>
</Style>
</GroupBox.Style>
<Grid Margin="10,0,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height=".250*"/>
<RowDefinition Height=".250*"/>
</Grid.RowDefinitions>
<RadioButton Name="RadioBtn1" VerticalAlignment="Center" ToolTipService.ShowOnDisabled="True" Grid.ColumnSpan="3" Height="14.63">OP1</RadioButton>
<RadioButton Name="RadioBtn2" Grid.Row="1" VerticalAlignment="Center" ToolTipService.ShowOnDisabled="True" Grid.ColumnSpan="3" Height="14.63">OP2</RadioButton>
</Grid>
</GroupBox>发布于 2013-11-22 11:43:08
简单地使用触发器
<GroupBox Name="groupBox" Grid.Column="0" Grid.Row="1" Margin="2,0,0,0" Header="GroupBox" IsEnabled="False">
<Grid Margin="10,0,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition>
</ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height=".25*"/>
<RowDefinition Height=".25*"/>
</Grid.RowDefinitions>
<RadioButton Name="RadioBtn1" Height="14.63" Grid.ColumnSpan="3" VerticalAlignment="Center" ToolTipService.ShowOnDisabled="True">OP1
</RadioButton>
<RadioButton Name="RadioBtn2" Height="14.63" Grid.ColumnSpan="3" Grid.Row="1" VerticalAlignment="Center" ToolTipService.ShowOnDisabled="True">OP2
</RadioButton>
</Grid>
<GroupBox.Style>
<Style TargetType="GroupBox">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock x:Name="header" Text="{Binding}"/>
<DataTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="header" Property="Foreground" Value="Gray"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupBox.Style>
</GroupBox>发布于 2019-01-08 15:02:04
实际上,根本没有必要使用触发器或绑定。您只需使用Label作为标题(正如@progpow建议的那样),标题将变成灰色,就像任何其他控件一样:
<GroupBox>
<GroupBox.Header>
<Label Content="My Header Text" Padding="0" />
</GroupBox.Header>
</GroupBox>如果您只是为Header属性分配一个字符串,WPF将使用一个TextBlock来可视化头部,但是由于TextBlock只是一个FrameworkElement,而不是Label那样的Control,所以它不支持禁用(参见标签与TextBlock的区别)。
有必要为Padding="0"定义一个零填充( Label ),因为默认的填充是5,这看起来有点像GroupBox的头。
https://stackoverflow.com/questions/20143803
复制相似问题