我有带有工具栏(添加和删除命令)和 TabControl 的应用程序。TabControl的每个tabItem中都有VariableGrid控件。
看图片:http ://trueimages.ru/view/cNFyf
<DockPanel >
<ToolBarTray DockPanel.Dock="Top">
<ToolBar>
<Button Command="{x:Static VariableGrid:VariableGrid.AddRowCommand}"/>
<Button Content="Delete" Command="ApplicationCommands.Delete" />
</ToolBar>
</ToolBarTray>
<TabControl x:Name="tc">
<TabItem Header="Tab 1">
<vg:VariableGrid ItemsSource="{Binding Items1, Mode=TwoWay}"/> </TabItem>
<TabItem Header="Tab 2">
<vg:VariableGrid ItemsSource="{Binding Items2, Mode=TwoWay}"/>
</TabItem>
</TabControl>
<DockPanel >
工具栏命令在我的控制中实现:
public partial class VariableGrid : DataGrid, INotifyPropertyChanged
{
public static RoutedCommand AddRowCommand = new RoutedCommand();
public VariableGrid()
{
this.CommandBindings.Add(new CommandBinding(VariableGrid.AddRowCommand, AddRow));
this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Delete, R emoveRow, CanRemoveRow));
}
private void AddRow(object sender, ExecutedRoutedEventArgs e)
{
…
}
private void RemoveRow(object sender, ExecutedRoutedEventArgs e)
{
…
}
private void CanRemoveRow(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = (SelectedItems.Count > 0);
}
}
工具栏中的命令被禁用的情况很少:
- 当应用程序运行时
- 当我单击 DataGrid 的灰色字段时
- 当 DataGrid 为空时
When any row of DataGrid is selected - commands of toolbar are becoming active.
你能帮我解决我的问题吗?我应该设置什么 CommandTarget 的工具栏按钮?
PS:我的应用程序中有两个 VariableGrids。这就是为什么我不能将 CommandTarget 设置为“{Binding ElementName=variableGrid}”。我认为它应该设置为 FocusedElement。但我不知道该怎么做。