我正在关注如何修改控件模板的教程,但本教程使用一个新的切换按钮覆盖原始切换按钮,该按钮使用一个路径绘制三角形,而不是原始的十字形状扩展器。原始文件是否存在于我可以在某种风格中引用的地方?或者我将不得不使用矩形和路径绘制它?WPF在哪里可以找到treeview的togglebuton的默认样式?
<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"/>
所以你给我的风格,但如果我将所有的xaml复制到usercontrol资源,它似乎相当庞大。那是标准吗?或者有没有办法链接其他xaml文件。我觉得让另一个文件“treeviewitem.xaml”包含treeviewitem的样式是有意义的。我正在制作一个自定义控件,因此拥有一个自定义样式占据了控件的很多xaml似乎相当庞大。我真正想要做的唯一事情就是让孩子们与父母排队,给控制模式中的项目演示者提供一个-19的余量。 –
@JamesJoshuaStreet这是WPF常见的问题:或者控件的设计者在模板中配置了某些东西,或者你必须复制大量的代码。不过,从WinForms向前迈进了一步,根本没有模板。如果您想避免不惜一切代价复制粘贴,请参阅[“wpf force theme”](https://www.google.com/search?q=wpf+force+theme)(有多种解决方案,但没有一个他们是完美的)。 – Athari