C# WPF:如何启用命令?
我不知道为什么只有在ListView中选择了一个项目时,才会启用我上下文菜单中的添加项目。有人知道为什么吗 这是我的XAML代码C# WPF:如何启用命令?,c#,wpf,C#,Wpf,我不知道为什么只有在ListView中选择了一个项目时,才会启用我上下文菜单中的添加项目。有人知道为什么吗 这是我的XAML代码 <Window x:Class="Vokabular1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<Window x:Class="Vokabular1.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">
<Grid>
<Grid HorizontalAlignment="Stretch" Name="grid" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ListView Grid.Column="0" HorizontalAlignment="Stretch" Margin="10,10,10,10" Name="listView" VerticalAlignment="Stretch">
<ListView.View>
<GridView />
</ListView.View>
<ListView.CommandBindings>
<CommandBinding Command="New"
Executed="CommandBinding_Executed"
CanExecute="CommandBinding_CanExecute" />
</ListView.CommandBindings>
<ListView.ContextMenu>
<ContextMenu>
<MenuItem Name="Add" Header="_Add" Command="New" />
<MenuItem Header="Delete" Command="Delete" IsEnabled="True" />
</ContextMenu>
</ListView.ContextMenu>
<ListViewItem />
</ListView>
</Grid>
</Grid>
</Window>
调用
CommandBinding.CanExecute
需要焦点。因为在列表视图
中选择一个项目会迫使焦点转移到列表视图
;可以进行评估
如果要放置listView.Focus()
在窗口中
构造函数中,您会注意到CommandBinding.CanExecute
现在按预期被调用,因此在列表视图中没有包含或选择项的情况下被启用
将绑定移动到窗口
仍需要在窗口
内设置焦点;通过构造函数内的显式调用或通过其他方式;前任。。。在列表视图
中选择一个项目,或在窗口
中选择可以接收焦点的其他控件
private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show("ok");
}
private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
e.Handled = true;
}