WPF在哪里可以找到treeview的togglebuton的默认样式?

时间:2013-06-29 00:08:19

标签: .net wpf xaml treeview togglebutton

我正在学习如何修改controltemplate的教程,但教程会使用一个新的togglebutton覆盖原始切换按钮,该togglebutton使用Path绘制三角形,而不是原始的十字形扩展器。原作是否存在于我可以在一个风格中引用的某个地方?或者我将不得不使用矩形和路径绘制它?

<Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton">
   <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="ToggleButton">
          <Grid
          Width="15"
          Height="13"
          Background="Transparent">
            <Path x:Name="ExpandPath"
            HorizontalAlignment="Left" 
            VerticalAlignment="Center" 
            Margin="1,1,1,1"
            Fill="{StaticResource GlyphBrush}"
            Data="M 4 0 L 8 4 L 4 8 Z"/>
          </Grid>
          <ControlTemplate.Triggers>
            <Trigger Property="IsChecked"
               Value="True">
              <Setter Property="Data"
                TargetName="ExpandPath"
                Value="M 0 4 L 8 4 L 4 8 Z"/>
            </Trigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>

和其他地方

           <ToggleButton x:Name="Expander"
                  Style="{StaticResource ExpandCollapseToggleStyle}"
                  IsChecked="{Binding Path=IsExpanded,
                              RelativeSource={RelativeSource TemplatedParent}}"
                  ClickMode="Press"/>

2 个答案:

答案 0 :(得分:2)

您可以找到default styles on MSDN

如果要引用样式,则需要添加对PresentationFramework.Aero(或任何其他主题)的引用并合并资源。但是,它打破了主题“魔术”,因此将样式复制到您的资源可能是一个更好的主意。

答案 1 :(得分:0)

您可以像这样使用Expander控件。

<Grid>
    <Expander Name="PART_Expander" IsExpanded="{TemplateBinding TreeViewItem.IsExpanded}">
         <Expander.Header>
            <ContentPresenter ContentSource="Header" />
         </Expander.Header>
            <ItemsPresenter />
    </Expander>
    <ContentPresenter Name="PART_ContentPresenter" ContentSource="Header" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Collapsed" />
</Grid>