0
私はWPFでListViewをGridViewに設定しており、コンテキストメニューを持っています。 ListViewで何かが選択されているときにコンテキストメニューを有効にするにはどうすればよいですか?何も選択されていないとき、ListViewのコンテキストメニューを無効にする方法?
これをすべてXAMLでMVVMパターンに従っていきたいので、助けてもらえれば助かります。
私はWPFでListViewをGridViewに設定しており、コンテキストメニューを持っています。 ListViewで何かが選択されているときにコンテキストメニューを有効にするにはどうすればよいですか?何も選択されていないとき、ListViewのコンテキストメニューを無効にする方法?
これをすべてXAMLでMVVMパターンに従っていきたいので、助けてもらえれば助かります。
トリガーを使用する必要があります。最初にContextMenuをリソースとして定義します。 がここに短いサンプルです:これはあなたが何をしたいときに
<Window x:Class="SO.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ContextMenu x:Key="ctxmnu">
<MenuItem Header="Open" />
<MenuItem Header="Close" />
</ContextMenu>
</Window.Resources>
<StackPanel>
<ListView x:Name="lv">
<ListView.Items>
<clr:String>Item 1</clr:String>
<clr:String>Item 2</clr:String>
</ListView.Items>
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
<ListView.Style>
<Style TargetType="ListView">
<Setter Property="ContextMenu" Value="{StaticResource ctxmnu1}" />
<Style.Triggers>
<Trigger Property="SelectedIndex" Value="-1">
<Setter Property="ContextMenu" Value="{x:Null}" />
</Trigger>
</Style.Triggers>
</Style>
</ListView.Style>
</ListView>
</StackPanel>
</Window>
すべてのことを言って、私は本当のシナリオを想像することはできません。まず、ListViewを右クリックするとコンテキストメニューがポップアップし、項目が選択されます。第二に、これは悪いUIデザインだと思います。同じメニューを表示することをお勧めしますが、アイテムを無効にしてください(ケース内のすべてのアイテム)。このようにして、ポップアップメニューが存在することをユーザに通知しますが、その機能は現在有効になっていません。
ありがとうございました。私はアイテムを無効にするように調整します^^ – user25101622