TreeView コントロールを含むユーザー コントロールがあります。TreeViewUserControl クラスで呼び出される依存関係プロパティの値に基づいて、 で使用される**binding**
のText
プロパティのを設定したいと思います。TextBlock
TreeView
ItemTemplate
NodeDisplayProperty
以下に示すものと同様のことを試しました (ただし、 の正しいデータ コンテキストを設定します) が、 のプロパティが「二重バインディング」を拒否するためNodeDisplayProperty
、機能しません。Text
TextBlock
項目テンプレートを使用しているため、のプロパティDisplayMemberPath
もTreeView
設定できません。
新しいバインディング クラスの作成を伴わない提案はありますか? 理想的には XAML ソリューションが欲しいのですが、コード ビハインドで行う場合、XAML で定義された項目テンプレートのコード ブロックのバインドにどのようにアクセスしますか?
編集:ツリーに表示される項目はモデルのものであるため、UI 要素には表示されません。
ありがとう!
<UserControl x:Class="TreeViewUserControl">
<Grid>
<TreeView ItemsSource="{Binding Path=Hierarchy}" HorizontalAlignment="Stretch" Name="treeHierarchy" SelectedItemChanged="treeHierarchySelectedItemChanged" >
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Nodes}">
<!-- Here --- --> <TextBlock Text="{Binding Path={Binding NodeDisplayProperty}}" VerticalAlignment="Center" FontSize="13" >
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem Command="userControls:Commands.RemoveNode">
</MenuItem>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Style.Triggers>
<!-- ... -->
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
</Grid>
</UserControl>