我正在關注如何修改控件模板的教程,但本教程使用一個新的切換按鈕覆蓋原始切換按鈕,該按鈕使用一個路徑繪製三角形,而不是原始的十字形狀擴展器。原始文件是否存在於我可以在某種風格中引用的地方?或者我將不得不使用矩形和路徑繪製它?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