有一个名为SystemCommands
的WPF类。我见过在按钮上使用这些命令的例子来执行常见的窗口任务,如最大化,最小化和关闭。XAML通过SystemCommands最小化/最大化/关闭按钮
一个我发现的例子看起来像这样(简化):
<Window x:Name="MainWindow">
<Grid>
<Button Content="Close"
Command="{x:Static SystemCommands.CloseWindowCommand}"
CommandParameter="{Binding ElementName=MainWindow}" />
</Grid>
</Window>
当我启动应用程序的按钮将被禁用,我不能点击它。更改IsEnabled
属性不起作用。
我设法让按钮启用一次,但我现在无法再现它。无论如何,当它被启用时,我点击它时什么也没有发生。
我必须做些什么来启用此按钮并实际关闭窗口(或最小化/最大化)?如果可能的话,我真的更喜欢它是仅限XAML的解决方案。
我明白了。不过,这让我很好奇。无论如何你必须提供你自己的实现,这些命令的意义是什么? SystemCommands有一个常规的按钮单击事件处理程序不具有什么优势? – GTHvidsten
'RoutedCommand'是WPF去完整MVVM之前的一个保留位。在MVVM模式中,您将使用自己的'ICommand'实现。这样做的好处是命令代码存在于视图模型中,而不是视图中。 'RoutedCommand' *确实*有一个好处。你可以从支持它的任何东西中提取一个,但通过'CommandBinding'在视觉树中的任何位置处理它。 –
这将允许您在拥有自己的“保存”按钮的窗口上拥有任意数量的用户控件。然后,你可以在窗口级别捕获该命令,因为'RoutedCommand'冒出可视化树,就像事件一样。这可以让你在一个地方保存逻辑,但从任何地方都可以“提升”, –