0

コピー/貼り付けのためにデータグリッドでコンテキスト メニューを使用しています。しかし、ContextMenu の Command Parameter で現在のビューを取得していません。他のコマンド バインディングでは、View 名を Command パラメータとして渡して、現在のビュー ステータスを取得しています。しかし、私は自分のビューを渡すことができないため、この ContextMenu で立ち往生しています。私はMVVMを使用しています。

私のスニペットは

<DataGrid.ContextMenu>
     <ContextMenu x:Name="_menu">
           <MenuItem Header="Copy" Command="{Binding CopyCommand}" 
           CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}},Path=DataContext}" />
      </ContextMenu>
</DataGrid.ContextMenu>
4

2 に答える 2

0
<DataGrid.ContextMenu>
     <ContextMenu x:Name="_menu">
           <MenuItem Header="Copy" Command="{Binding CopyCommand}" 
           CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}},Path=PlacementTarget.DataContext}" />
      </ContextMenu>
</DataGrid.ContextMenu>

私はあなたのデータグリッドがあなたの現在のビューにあると思います

于 2012-06-25T10:34:30.703 に答える
0

ViewModel(私の意見では) 最善の方法は、ページ内で静的リソースとして宣言することです。DataContext次に、ルート パネルをこの静的リソースにバインドできます (現在の場所に移動します)。これには、(を使用するのではなくCommandParameterにパラメーターをバインドすることにより)でバインディングを機能させるという追加の利点があります。StaticResourceFindAncestor

現在の Binding 式が機能しない最も可能性の高い理由は、テンプレートのカプセル化の境界に達したことですが、すべてのコードを見ないと確信が持てません

于 2012-06-25T10:06:48.177 に答える