Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为MetroWindow内部的TreeView指定边框?_C#_Wpf_Xaml_Treeview_Mahapps.metro - Fatal编程技术网

C# 如何为MetroWindow内部的TreeView指定边框?

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

我刚开始使用MahApps.Metro包中的
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>