1

我正在关注有关如何修改控件模板的教程,但该教程使用新的切换按钮覆盖了原始切换按钮,该切换按钮使用路径来绘制三角形,而不是原始的十字线形扩展器。原件是否存在于某个地方,我只能以某种风格引用?还是我将不得不使用矩形和路径来绘制它?

<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"/>
4

2 回答 2

2

您可以在 MSDN 上找到默认样式

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

于 2013-06-29T06:11:01.347 回答
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>
于 2017-10-31T12:00:56.783 回答