0

ユーザーコントロールのリストビューからコンテキストメニューを使用しようとしましたが、コマンドが起動しません(必要に応じて有効化/無効化もしません)。

コード:

<UserControl ....
    <UserControl.Resources>
        <ContextMenu x:Key="SharedInstanceContextMenu">
            <MenuItem Header="Edit" Command="{Binding ElementName=UC, Path=DataContext.EditSelectedItemCommand}" CommandParameter="{Binding}"/>
        </ContextMenu>

<Grid ...>
    <ListView ....>
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="IsSelected" Value="{Binding Path=IsSelected}"/>
                <Setter Property="ContextMenu" Value="{StaticResource SharedInstanceContextMenu}"/>
            </Style>
        </ListView.ItemContainerStyle>   

コマンドを起動(およびコマンド動作の一部として有効化/無効化)するにはどうすればよいですか?

(ところで、この質問はTreeviewコンテキストメニューコマンドが起動しないのと似ていますが、そこですべての解決策を試しても機能しません。)

4

1 に答える 1

1

コマンドがビューモデルに存在しないことを示すバインディングエラーが出力ウィンドウに含まれていますか?もしそうなら、それはおそらくあなたのContextMenuのDataContextが正しく設定されていないことを意味します。コンテキストメニューは、要素の上にポップアップする必要があるため、ビジュアルツリーの一部ではありません。つまり、他のコントロールのようにDataContextを継承しません。1つの解決策は、PlacementTargetを使用してビューモデルにアクセスすることです。詳細については、この投稿を参照してください。

于 2012-04-19T01:11:49.690 に答える