2012-09-03 62 views
1

我想在WPF中使用擴展器和StackPanels創建一個手風琴樣式菜單。做一個擴展器的頭ToggleButton

我希望能夠點擊Expander Header並顯示StackPanel而不顯示箭頭。這是工作,當我點擊箭頭,但我想刪除箭頭。

當我從Expander的ToggleButton中刪除'Arrow'屬性時,ToggleButton是Content Presenter下面的一個小區域,用戶難以點擊它。

有沒有辦法讓擴展器的整個頭部(包括文本)成爲ToggleButton?

在膨脹機的模板我有以下:

<ToggleButton IsChecked="{Binding Path=IsExpanded,Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" 
               OverridesDefaultStyle="True" Template="{StaticResource ExpanderToggleButton}" Background="{StaticResource NormalBrush}" 
               Height="25"> 
           </ToggleButton> 
           <ContentPresenter Margin="4" ContentSource="Header" RecognizesAccessKey="True" /> 

和在 'ExpanderToggleButton':

<ControlTemplate x:Key="ExpanderToggleButton" TargetType="ToggleButton"> 
     <Border Name="Border" CornerRadius="2,0,0,0" Background="Transparent" BorderBrush="{StaticResource NormalBorderBrush}" BorderThickness="0,0,1,0"> 
     </Border> 
     <ControlTemplate.Triggers> 
      <Trigger Property="ToggleButton.IsMouseOver" Value="true"> 
       <Setter TargetName="Border" Property="Background" Value="Red" /> 
      </Trigger> 
      <Trigger Property="IsPressed" Value="true"> 
       <Setter TargetName="Border" Property="Background" Value="{StaticResource PressedBrush}" /> 
      </Trigger> 
      <Trigger Property="IsEnabled" Value="False"> 
       <Setter TargetName="Border" Property="Background" Value="{StaticResource DisabledBackgroundBrush}" /> 
       <Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource DisabledBorderBrush}" /> 
       <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 

回答

0

指定報頭模板分別喜歡;

<Expander> 
    <Expander.Header> 
    .... (This is where your toggle button currently sits any way in a default template) 
    </Expander.Header> 
    <Expander.Content> 
    .... 
    </Expander.Content> 
</Expander> 

這樣你的頭部模板應該接收鼠標按下事件與您的切換按鈕將它應用在你的頭顯示的內容。