2016-04-18 88 views
0

我有一個代碼,其中我有groupbox,哪些在包裝面板中的複選框,實際上包裝解包groupbox,是一個需求,因此工作正常。 但是,邊框內的複選框也包裹我的groupbox取消選中我不想要的。 你可以請建議如何創建一個功能,其中邊框內的複選框不包裹我的groupbox。 WPF 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> 

回答

0

可以在EventTrigger設置SOURCENAME,所以它僅適用於糾正複選框。您還需要將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>