バインディングコードを取得しようとしています。 Basciallyグリッドのコンテキストメニューの要素のIsEnabledプロパティを、グリッド内の選択した行の値にバインドします。WPF RelativeSourceとAncestorTypeを使用したデータバインディング
私はそれがこれで作業しています
<my:DataGrid.ContextMenu>
<ContextMenu DataContext="{Binding PlacementTarget.SelectedItem, RelativeSource={RelativeSource Self}}">
<MenuItem Header="Grant Access" IsEnabled="{Binding Connectable}"/>
</ContextMenu>
</my:DataGrid.ContextMenu>
しかし、私は、このようにそれをしたいし、それが働いていません。それはエラーではありませんが、メニュー項目を無効にしません。どんな考え?あなたの問題にいくつかの光を当てること - デバッグモードでは、あなたが結合エラーの詳細情報を得るでしょうしながら、あなたは、Visual Studioの出力ウィンドウを見れば
<my:DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Grant Access" IsEnabled="{Binding Path=SelectedItem.Connectable, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type my:DataGrid}}}"/>
</ContextMenu>
</my:DataGrid.ContextMenu>
こんにちは!これを行うための構文を知っていますか? – Bob
ええと私はそれを試してみましたが、出力ウィンドウからエラーが出ます:System.Windows.Data Error:4:参照 'ElementName = dataGridInstall'でバインディングのソースを見つけることができません。 BindingExpression:Path = SelectedItem; DataItem = null;ターゲット要素は 'ContextMenu'(Name = '');ターゲットプロパティは 'DataContext'(タイプ 'Object')です – Bob
これは私が言ったことです。それは動作しません。 'PlacementTarget.SelectedItem'でバインディングを使用する最初のメソッドを使用する必要があります。 – decyclone