首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用groupBox,包括WPF中的groupBox名称

禁用groupBox,包括WPF中的groupBox名称
EN

Stack Overflow用户
提问于 2013-11-22 11:28:16
回答 4查看 5K关注 0票数 5

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

代码语言:javascript
复制
<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会给我发邮件!)现在我希望圆区域也应该被禁用。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-11-22 11:40:36

在XAML中,一个简单的Trigger可以帮你做到这一点(后面没有任何代码):

代码语言:javascript
复制
<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>
票数 6
EN

Stack Overflow用户

发布于 2013-11-22 11:43:08

简单地使用触发器

代码语言:javascript
复制
<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>
票数 3
EN

Stack Overflow用户

发布于 2019-01-08 15:02:04

实际上,根本没有必要使用触发器或绑定。您只需使用Label作为标题(正如@progpow建议的那样),标题将变成灰色,就像任何其他控件一样:

代码语言:javascript
复制
<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的头。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20143803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档