2013-12-13 2 views
1

방금 ​​MahApps.Metro 패키지에있는 MetroWindow을 사용하기 시작했으며 내 XAML의 TreeView에 더 이상 경계가 없다는 것을 알았습니다. 나는 해봤 다음하지만 어떤 영향을 갖고있는 것 같다하지 않았다 :MetroWindow 내부의 TreeView에 테두리를 지정하는 방법은 무엇입니까?

App.xaml 나는 다음의 4 가지 스타일의 페이지를 참조한 내에서
<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> 

:

<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> 
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> 
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" /> 
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" /> 
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" /> 

내가 추측하고있어 범인이 스타일 중 하나에서 BorderBrushBorderThickness을 통해 TreeView 요소 자체에 덮어 쓸 수있는 것으로 나타났습니다 (이 경우는 그렇지 않습니다). 이 일을하기 위해 제가 빠진 것이 있습니까? 아니면 다른 방식이어야합니까?

답변

2

그런 다음 소리. 당신은 (MSDN에 TreeView Styles and Templates 페이지에있는 기본 TreeView ControlTemplate에서) 자신을 만들기 위해 해결해야 할 수도 있습니다 :

<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> 

는 적어도 이런 식으로, 당신은 당신의 요구 사항을 정의 할 수 있습니다.

+0

감사합니다. 트릭을 수행하는 것 같습니다. – Fizz

0

스타일로 정의 된 Treeview의 템플릿에서 BorderThickness에 BorderThinding이없는 경우 Controls.xaml이 트리 뷰 선언에 설정하면 아무 효과가 없습니다. 당신이 ControlTemplate에 액세스 할 수 있습니다하지 않는 한 당신이 TreeView에 일반 Border 속성을 설정할 수 없습니다처럼

<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. 
    [...]