【问题标题】:WPF GroupBox control templateWPF GroupBox 控件模板
【发布时间】:2016-04-18 20:48:22
【问题描述】:

我有一个代码,其中我有 groupbox,并且在包装面板中有复选框,它实际上包装了 groupbox,这是一个要求,所以工作正常。 但是边框内的复选框也将我的组框包裹在我不想要的取消选中。 您能否建议我如何创建一个功能,其中边框内的复选框不包含我的组框。

    <StackPanel.Resources>
        <Style TargetType="GroupBox" x:Key="groupBoxStyle">
            <Style.Triggers>
                <EventTrigger RoutedEvent="CheckBox.Unchecked">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Height" Duration="0:0:.2"  To="30" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
                <EventTrigger RoutedEvent="CheckBox.Checked">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Height" Duration="0:0:.2" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Style.Triggers>
        </Style>
    </StackPanel.Resources>
    <GroupBox Margin="8,0" Height="150" BorderBrush="Transparent" Style="{StaticResource groupBoxStyle}">
        <GroupBox.Header>
            <WrapPanel >
                <CheckBox IsChecked="True" VerticalAlignment="Center" />
                <Label Content="Volatility" Background="#00000000" Foreground="#FF0033FF" FontWeight="Bold" />
            </WrapPanel>
        </GroupBox.Header>
        <Border BorderBrush="Black" BorderThickness="1">
            <UniformGrid Columns="2">
                <Label Content="Spots"></Label>
                <TextBox AcceptsReturn="False" AcceptsTab="True" AllowDrop="True" IsTabStop="True" />
                <Label Content="Hist. references" />
                <TextBox AcceptsReturn="False" AcceptsTab="True" AllowDrop="True" IsTabStop="True" />
                <Label Content="Tenors" />
                <TextBox AcceptsReturn="False" AcceptsTab="True" AllowDrop="True" IsTabStop="True" />
                <Label Content="(5) Is there Value Plan? Yes/No" Margin="0,0,-42,0"  />
                <CheckBox Margin="0,5,0,0" Name="chkISvalue" HorizontalAlignment="Right" Width="84" Style="{x:Null}"  Checked="chkISvalue_Checked" Unchecked="chkISvalue_Unchecked" />
            </UniformGrid>
        </Border>
    </GroupBox>
</StackPanel>

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    您可以在 EventTrigger 中设置 SourceName,因此它只适用于正确的 CheckBox。您还需要将 EventTrigger 从样式移动到 GroupBox 本身的触发器,以便您可以使用 CheckBox 名称。 完整示例:

    <StackPanel>    
    <GroupBox Margin="8,0" Height="150" BorderBrush="Transparent" Style="{StaticResource groupBoxStyle}">
      <GroupBox.Triggers>
        <EventTrigger RoutedEvent="CheckBox.Unchecked" SourceName="WrappingCheckBox">
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation Storyboard.TargetProperty="Height" Duration="0:0:.2"  To="30" />
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>
        <EventTrigger RoutedEvent="CheckBox.Checked">
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation Storyboard.TargetProperty="Height" Duration="0:0:.2" />
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>
      </GroupBox.Triggers>
      <GroupBox.Header>
        <WrapPanel >
          <CheckBox Name="WrappingCheckBox" IsChecked="True" VerticalAlignment="Center" />
          <Label Content="Volatility" Background="#00000000" Foreground="#FF0033FF" FontWeight="Bold" />
        </WrapPanel>
      </GroupBox.Header>
      <Border BorderBrush="Black" BorderThickness="1">
        <UniformGrid Columns="2">
          <Label Content="Spots"></Label>
          <TextBox AcceptsReturn="False" AcceptsTab="True" AllowDrop="True" IsTabStop="True" />
          <Label Content="Hist. references" />
          <TextBox AcceptsReturn="False" AcceptsTab="True" AllowDrop="True" IsTabStop="True" />
          <Label Content="Tenors" />
          <TextBox AcceptsReturn="False" AcceptsTab="True" AllowDrop="True" IsTabStop="True" />
          <Label Content="(5) Is there Value Plan? Yes/No" Margin="0,0,-42,0"  />
          <CheckBox Margin="0,5,0,0" Name="chkISvalue" HorizontalAlignment="Right" Width="84" Style="{x:Null}" />
        </UniformGrid>
      </Border>
    </GroupBox>
    

    【讨论】:

      猜你喜欢
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 2015-09-07
      相关资源
      最近更新 更多