gpt4 book ai didi

WPF 标准命令 - 导出在哪里?

转载 作者:行者123 更新时间:2023-12-03 12:16:03 24 4
gpt4 key购买 nike

我正在我的 WPF 应用程序中创建一个标准菜单。

我知道我可以创建自定义命令,但我知道还有一堆标准命令可以绑定(bind)。

例如,要打开一个文件我应该绑定(bind)到 ApplicationCommands.Open,要关闭一个文件我应该绑定(bind)到 ApplicationCommands.Close。还有大量的 EditCommands、ComponentCommands 或 NavigationCommands。

似乎没有“退出”命令。我原以为会有 ApplicationCommands.Exit。

我应该将什么绑定(bind)到“退出”菜单项?为这种通用的东西创建自定义命令似乎是错误的。

最佳答案

是的,Microsoft 包含 ApplicationCommands.Exit 会很有意义。命令在他们的预定义命令集合中。令我失望的是他们没有。但正如这个问题的答案所表明的那样,并非一切都丢失了。

由于缺少正确的 ApplicationCommands.Exit,有很多解决方法。目的。但是,我觉得最没捕获重点。他们要么在 View 模型中实现某些东西,对于严格意义上的 View 行为(在某些情况下使用例如 Application.Current.MainWindow !),或者他们编写一堆代码隐藏来执行 XAML 所做的事情非常好,更方便。

恕我直言,最简单的方法就是声明一个 RoutedUICommand窗口的资源,将其附加到命令绑定(bind)和菜单项,以连接所有部分。例如:

<Window x:Class="ConwaysGameOfLife.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">

<Window.Resources>
<RoutedUICommand x:Key="fileExitCommand" Text="File E_xit">
<RoutedUICommand.InputGestures>
<KeyGesture >Alt+F4</KeyGesture>
</RoutedUICommand.InputGestures>
</RoutedUICommand>
</Window.Resources>

<Window.CommandBindings>
<CommandBinding Command="{StaticResource fileExitCommand}" Executed="fileExitCommand_Executed"/>
</Window.CommandBindings>

<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="_File">
<!-- other menu items go here -->
<Separator/>
<MenuItem Command="{StaticResource fileExitCommand}"/>
</MenuItem>
</Menu>
<!-- the main client area UI goes here -->
</DockPanel>

</Window>
Executed命令绑定(bind)的事件处理程序很简单:

private void fileExitCommand_Executed(object sender, ExecutedRoutedEventArgs e)
{
Close();
}

当然,假设您的程序实现遵循关闭主窗口以退出程序的通常语义。

这样,所有特定于 UI 的元素都直接进入 RoutedUICommand对象,可以在 XAML 中正确方便地进行配置,而不必声明一个新的 C# 类来实现命令和/或弄乱代码隐藏中的输入绑定(bind)。 MenuItem对象已经知道如何处理 RoutedUICommand在显示方面,因此走这条路线可以很好地将命令的属性与 UI 的其余部分解耦。它还提供了一种方便的方式来提供辅助键手势,以防您更喜欢默认的 Alt+F4(例如 Ctrl+W)以外的其他东西。

你甚至可以把 RoutedUICommand App.xaml 文件中的声明,以便在程序中的多个窗口之间重用(如果它们存在)。同样,将在资源中声明的 UI 特定方面与在整个程序中找到的消费者分离。

我发现这种方法比我见过的其他选项(这里和其他地方)更通用和更容易实现。

关于WPF 标准命令 - 导出在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1286692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com