是否有任何"最佳实践"方法来替换默认模板的一部分.当前的用例是树视图.默认情况下,树视图具有这种小三角形形状以展开和折叠.
如果我替换整个控件模板,我知道如何替换它们,如下面的代码所示.我不确定是否有办法"保持所有默认值,只需更改XY".它不是一种风格,我基本上需要替换现有控件模板的一部分.
为了说明,请查看以下XAML.第一个较小的块是我希望能够适应的相关XAML.
较大的第二和第三部分基本上是默认模板的副本,仅用于从头开始管理"已更改"部分.
有没有更好的方法来做到这一点,在下半场节省长而混乱的XAML?
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton">
<Setter Property="Focusable" Value="False"/>
<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="Black"
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>
Run Code Online (Sandbox Code Playgroud)
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TreeViewItem}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="19"
Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions> …Run Code Online (Sandbox Code Playgroud)