2016-08-08 4 views
0

TreeNodeアイテムリストをツリービューにバインドします。フォアグラウンドカラーのDataTemplate TextBlockにバインドできません。Foreground ColorをTreeViewに設定できませんDataTemplate TextBlock(MVVM)

最初は縛られているので、手動で色を付けようとしました。つまりForeground="Red"ですが、このように私のテキストの色は変わりません。

XAML:

<TreeView ItemsSource="{Binding TreeViewNodesPLCCode}" > 
     <TreeView.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
        <TextBlock Text="{Binding Name}" Foreground="{Binding Path=MachineObject.Color}"/> 
        </Grid> 
       </DataTemplate> 
      </TreeView.ItemTemplate> 
    </TreeView> 

コード:

TreeViewNodesPLCCode=new ObservableCollection<TreeNode>() 

public class TreeNode: TreeViewItem 
    { 
     public string Name{ get; set; } 
     public Machine MachineObject { get; set; } 
    } 
    public class Machine 
    { 
     public Int32 ID { get; set; } 
     public Brush Color { get; set; } 
    } 

答えて

1

私はあなたのコードをしようとすると、私はVisual Studioで、次のような出力が得られます。

ItemTemplateにとItemTemplateSelectorはアイテムでは無視されますすでに のItemsControlのコンテナタイプです。これは、あなたがDataTemplateずに直接添加することができるTreeView項目に追加されていることを意味

=「のTreeNode」を入力します。

DataTemplateは、データオブジェクト(つまりビジネスオブジェクト)を視覚化するために作成されます。 TreeViewItemはすでにDataTemplateです。私はプログラム的に私のツリーを作成することはできませんツリービューアイテムにするの継承を削除した場合は

public class TreeNode 
    { 
     public string Name{ get; set; } 
     public Machine MachineObject { get; set; } 
    } 
+0

クラスTreeNodeためTreeViewItemに継承を削除し、あなたの問題を解決するには。 –

+0

ありがとう、私はTreeNodeを作成するときに色を設定するだけで、バインドする必要はありません。 –

+0

あなたの仕様はわかりませんが、 'TreeViewItem'への継承がなくなるまで、あなたが指定したコードでバインディングは正常に動作します。灰色のチェックマークをクリックすると、この回答を受け入れることができます。これは他のユーザーには便利かもしれません;) – Slyvain

関連する問題