C# 如何为MetroWindow内部的TreeView指定边框?
我刚开始使用MahApps.Metro包中的C# 如何为MetroWindow内部的TreeView指定边框?,c#,wpf,xaml,treeview,mahapps.metro,C#,Wpf,Xaml,Treeview,Mahapps.metro,我刚开始使用MahApps.Metro包中的MetroWindow,我注意到我的XAML中的TreeView不再有边框。我尝试了以下方法,但似乎没有任何效果: <TreeView x:Name="AssetsTreeView" ItemsSource="{Binding Assets}" Height="250" BorderThickness="2" BorderBrush="Black"> <TreeView.ItemTemplat
MetroWindow
,我注意到我的XAML中的TreeView
不再有边框。我尝试了以下方法,但似乎没有任何效果:
<TreeView x:Name="AssetsTreeView"
ItemsSource="{Binding Assets}"
Height="250"
BorderThickness="2"
BorderBrush="Black">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Items}">
<TextBlock Text="{Binding Name}" />
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
我猜罪魁祸首是其中一种样式,但我想我可以通过
TreeView
元素本身上的BorderBrush
和BorderThickness
来覆盖它(情况似乎并非如此)。我做这件事是缺少什么,还是必须换一种方式 如果Treeview的模板中没有由中的样式定义的带有TemplateBinding on BorderThickness的边框,我认为Controls.xaml,在Treeview的声明中设置它确实没有效果
<Style x:Key="{x:Type TreeView}" TargetType="TreeView">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeView">
<Border Name="Border"
BorderThickness="{TemplateBinding BorderThickness}" <- these may be lacking in the
BorderBrush="{TemplateBinding BorderBrush}"> <- template defined in the
overriding style.
[...]
除非您可以访问控制模板
,否则听起来您将无法在该树视图
上设置正常的边框
属性。您可能只需要满足于创建自己的(从MSDN页面中的默认TreeView ControlTemplate
):
至少通过这种方式,您可以根据自己的需求进行定制
<Style x:Key="{x:Type TreeView}" TargetType="TreeView">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeView">
<Border Name="Border"
BorderThickness="{TemplateBinding BorderThickness}" <- these may be lacking in the
BorderBrush="{TemplateBinding BorderBrush}"> <- template defined in the
overriding style.
[...]
<Border Name="Border" CornerRadius="1" BorderThickness="1">
<Border.BorderBrush>
<SolidColorBrush Color="{DynamicResource BorderMediumColor}" />
</Border.BorderBrush>
<Border.Background>
<SolidColorBrush Color="{DynamicResource ControlLightColor}" />
</Border.Background>
<TreeView ... />
</Border>