1

我正在使用 Prism 构建复合 WPF 应用程序并使用功能区库。我遇到困难的一件事是跨区域命令。

例如,我的“RibbonRegion”中有一个功能区,“MainRegion”中有一个网格视图。假设我希望我的功能区中的一个按钮在网格视图中弹出一个带有当前选定项目的消息框,我该怎么做?

最简单的方法是使用 EventAggregator 但我担心如果我有一堆订阅者只是为了点击按钮而连接我只是在询问内存泄漏问题。

有没有办法拥有一个跨区域命令,以便单击我的“RibbonRegion”中的一个按钮将在网格视图中获取所选项目并弹出一个带有该值的消息框?

4

1 回答 1

1

你可以使用一个System.Windows.Input.RoutedUICommand

首先,您需要如下声明您的命令:

public static class Commands
{
    public static readonly RoutedUICommand TestCommand = new RoutedUICommand("Test Command",
        "Test Command", typeof(Commands));
}

然后在您的 RibbonRegion xaml 中:

<my:RibbonButton Command="{x:Static cmd:Commands.TestCommand}" ...

然后在您的 MainRegion xaml 中:

<UserControl.CommandBindings>
    <CommandBinding CanExecute="OnTestCanExecute"
                    Command="{x:Static cmd:Commands.TestCommand}"
                    Executed="OnTestExecute" />
</UserControl.CommandBindings>

然后在您的 xaml.cs 中:

public void OnTestRouteCanExecute(object sender, System.Windows.Input.CanExecuteRoutedEventArgs e)
    {
        e.CanExecute = true;
    }

    public void OnTestRouteExecute(object sender, System.Windows.Input.ExecutedRoutedEventArgs e)
    {
        // do some stuff here
    }
于 2012-08-16T18:42:38.747 回答