3

以下に示すように定義された ItemsControl があります。基本的に、エディターのリスト (EditorList) があり、それぞれにハイパーリンクが必要です。ただし、私の開いているコマンド (OpenEditorCommand) プロパティは、エディターのリストと同じレベルにあります。コンテキストがリスト内の項目に設定されている場合、そのプロパティを参照するにはどうすればよいですか。RelativeSource メソッドを使用してみましたが、複雑すぎて理解できません。私は正しい軌道に乗っていますか?

<ItemsControl ItemsSource="{Binding EditorList}">
   <ItemsControl.ItemTemplate>
      <DataTemplate>
         <TextBlock Margin="2,6" HorizontalAlignment="Center">
            <Hyperlink Command="{Binding RelativeSource={RelativeSource AncestorType=ItemsControl, AncestorLevel=2, Mode=FindAncestor}, Path=OpenEditorCommand}" CommandParameter="{Binding Name}">
               <StackPanel>
                  <Image Source="{Binding Image}" Width=32/>
                  <TextBlock Text="{Binding Path=Name}"/>
               </StackPanel>
            </Hyperlink>
         </TextBlock>
      </DataTemplate>
   </ItemsControl.ItemTemplate>
</ItemsControl>
4

1 に答える 1

4

AncestorLevel検索されたタイプの祖先が要素ツリーに複数存在する可能性がある場合にのみ、 を設定する必要があります。デフォルト値は 1 で、これは最も近いものを見つけることを意味します。

ただし、のにPathバインドすることをに指定する必要があります。OpenEditorCommandDataContextItemsControl

Command="{Binding Path=DataContext.OpenEditorCommand, RelativeSource={RelativeSource AncestorType=ItemsControl, Mode=FindAncestor}}"
于 2012-05-03T21:32:00.367 に答える