我正在学习如何修改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"/>
答案 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>