2017-09-14 3 views
0

私はツリービューのWPFアプリケーションを持っています。階層的なアイテムテンプレートがあります。バインディングにはどのようなパスを書き込む必要がありますか?

イメージソースをTreeViewItemとして使用しているデータクラスにバインドしたいと思っています。つまり、RestoreItemVMです。パスに何を書く必要がありますか?私がこれまで試したすべてはあなたがデータコンテキストへのパスを指定する必要があります...それはRestoreItemVMにキャストすることはできませんだと言って私のコンバータに

<TreeView.ItemTemplate> 
    <HierarchicalDataTemplate ItemsSource="{Binding Children}" DataType="restoreTab:RestoreItemVM"> 
     <DockPanel VerticalAlignment="Center" HorizontalAlignment="Left" LastChildFill="False"> 
      <CheckBox Focusable="False" VerticalAlignment="Center" IsChecked="{Binding IsChecked}" PreviewMouseRightButtonDown="TreeViewItem_OnPreviewMouseRightButtonDown"/> 
      <Image Width="20" Margin="3" 
        Source="{Binding RelativeSource={RelativeSource 
          FindAncestor, AncestorType={x:Type TreeViewItem}, 
          AncestorLevel=2}, Converter={x:Static local:RestoreItemToImageConverter.Instance}, 
          Path= ????? }" 
        PreviewMouseRightButtonDown = "TreeViewItem_OnPreviewMouseRightButtonDown"/> 
     </DockPanel> 
    </HierarchicalDataTemplate> 
</TreeView.ItemTemplate> 

答えて

1

をエラーがスローされました:

Source="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeViewItem}}, Converter={x:Static local:RestoreItemToImageConverter.Instance}, 
     Path=DataContext}" 

しかし、実際に、それはですRestoreItemVMは既にImageのDataContextであるため、よりシンプルで、祖先である必要はありません。代わりにこれを試してみてください。

<Image ... Source="{Binding Path=., Converter={x:Static local:RestoreItemToImageConverter.Instance}}" /> 

Path=.DataContext自体に結合する:

Special symbols in WPF binding - what does "{Binding Path=.}" mean?

そしてHierarchicalDataTemplateDockPanelDataContextItemsSourceにおける現在のRestoreItemVMオブジェクトです。

+0

Hmm ..これは実際に動作します。私はそれを受け入れる前にいくつかの説明を追加できますか?Path =とは何か。手段 ? –

+0

パス=。 DataContext自体にバインドすることを意味します:https://stackoverflow.com/questions/1066262/special-symbols-in-wpf-binding-what-does-binding-path-mean – mm8

+0

私はいくつかの情報を追加しました。私が受け入れるでしょう –

関連する問題