2015-11-05 16 views
0

我試圖讓TreeView將項目顯示爲TextBlock,然後基於數據綁定對象內的布爾值來使FontWeight Normal或Bold幾乎相同如下:Textblock將不會在HierachicalDataTemplate中接收到觸發器

<TreeView x:Name="TreeView" ItemsSource="{Binding Layers}"> 
    <TreeView.Resources> 
     <HierarchicalDataTemplate DataType="{x:Type viewModels:Layer}" ItemsSource="{Binding Path=Layers}"> 
      <TextBlock Text="{Binding Path=Name}"> 
       <TextBlock.Style> 
        <Style TargetType="TextBlock"> 
         <Setter Property="FontWeight" Value="Normal" /> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding Path=ShowInPreview}"> 
           <Setter Property="FontWeight" Value="Bold" /> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </TextBlock.Style> 
      </TextBlock> 
     </HierarchicalDataTemplate> 
    </TreeView.Resources> 
</TreeView> 

觸發器外的Setter實際上工作,當我將該設置爲「Bold」時,一切都立即變粗。這只是DataTrigger,從來沒有,好......觸發器:P

ItemSource實現INotifyPropertyChanged,所有屬性(包括ShowInPreview)上的Layer對象也是如此。

我試過了各種不同的設置,我可以在網上找到(使用Window.Resources,把它放在TreeView.ItemContainerStyle等等),所以我現在完全處於虧損狀態!

回答

0

在您的數據觸發器上設置值。

+0

Doooohh,你是完全正確的,我怎麼想那??謝謝! –

0

我不知道你的財產確切地在哪裏,嘗試這樣的事情。我認爲,在綁定問題:

<DataTrigger Binding="{Binding Path=DataContext.ShowInPreview, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}}"> 
+0

'ShowInPreview'是綁定到TextBlock的Layer對象的一部分(與顯示名稱相同的那個:'{Binding Path = Name}') –

相關問題