0

TreeView コントロールを含むユーザー コントロールがあります。TreeViewUserControl クラスで呼び出される依存関係プロパティの値に基づいて、 で使用される**binding**Textプロパティのを設定したいと思います。TextBlockTreeViewItemTemplateNodeDisplayProperty

以下に示すものと同様のことを試しました (ただし、 の正しいデータ コンテキストを設定します) が、 のプロパティが「二重バインディング」を拒否するためNodeDisplayProperty、機能しません。TextTextBlock

項目テンプレートを使用しているため、のプロパティDisplayMemberPathTreeView設定できません。

新しいバインディング クラスの作成を伴わない提案はありますか? 理想的には 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>
4

0 に答える 0