2

私の WPF TreeView では、HierarchicalDataTemplate. そのには、親 ViewModel にバインドする必要ItemTemplateがあるボタンがあります。これは親の、つまり、以下の例でコレクションを保持する ViewModel です。s 自身のSubItemがとして使用されます。CommandDataContextHierarchicalDataTemplateSubItemsItemTemplateDataContextCommandParameter

<TreeView ItemsSource="{Binding Items}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding SubItems}">                
            <HierarchicalDataTemplate.ItemTemplate>
                <DataTemplate>
                    <Button Command="??CmdOnDtaCntxtOfHierDtaTmplt" 
                            CommandParameter="{Binding}" />                                 
                </DataTemplate>
            </HierarchicalDataTemplate.ItemTemplate>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

これを XAML でのみ行うにはどうすればよいですか?

4

1 に答える 1

3

次のバインディングが機能するはずです。

<Button Command="{Binding DataContext.Command, 
        RelativeSource={RelativeSource AncestorLevel=2, AncestorType=TreeViewItem}}"
        CommandParameter="{Binding}" />

これは、現在の TreeViewItem の親である TreeViewItem に関連付けられている DataContext (この場合はコレクション SubItems を保持する VM) の Command プロパティにバインドします。

于 2013-04-23T10:08:50.813 に答える