如果一个非焦点的DataGrid位于不同的Prism区域,我如何用RoutedCommands锁定它们?

问题描述 投票:0回答:1

我已经被这个问题困扰了几周,希望能得到一些建议。我有2个Prism区域。一个包含ToolbarView(ToolBarTray控件)的工具栏区域和一个包含DataGridView(DataGrid控件)的内容区域。

regions

我的工具栏区域有各种RoutedCommands,可以在DataGrid上执行命令。

<ToolBar ClipToBounds="False">
    <Button Command="{x:Static ApplicationCommands.Undo}"
            Content="Undo"/>
    <Button Command="{x:Static ApplicationCommands.Redo}"
            Content="Redo"/>
    <Button Command="{x:Static local:CustomDataGrid.FooCommand}"
            Content="Foo"/>
</ToolBar>

当我的DataGrid没有键盘焦点时,Undo、Redo和Foo按钮将被禁用。当我点击DataGrid单元格时,它们将重新启用。当DataGrid失去键盘焦点时,这些按钮会被禁用,这可能会让人感到困惑,有时甚至是令人沮丧的。(例如:当我点击DataGrid单元格时,这些按钮会被禁用。删除一行会使DataGrid失去键盘焦点,从而使所有按钮失效)。) 有什么办法可以确保UndoRedo和Foo能够保持启用并在DataGrid上工作?我曾考虑过使用IEventAggregator,但我觉得这有违使用RoutedCommands的目的。任何建议都将被感激。

c# wpf datagrid prism
1个回答
0
投票

我曾考虑过使用IEventAggregator,但我觉得这样就违背了使用RoutedCommands的目的。

没错,这是件好事。现在,你的测试是如何看待这种设置的?我估计,没有。如果工具条的视图模型与数据网格的视图模型通过一些代码进行通信(而不是xaml,可以是 IEventAggregator 或其他服务,或者他们可能是。同例),写一个测试套件会容易很多。

我的建议是转储路由命令。

© www.soinside.com 2019 - 2024. All rights reserved.