【问题标题】:Using a Command to Open a Window (WPF)使用命令打开窗口 (WPF)
【发布时间】:2018-03-19 23:29:03
【问题描述】:

我正在尝试编写一个命令,以便当用户单击一个按钮时,会打开一个不同的窗口。到目前为止,我的 XAML 中有这个:

<Window.CommandBindings>
    <CommandBinding
        Command="ApplicationCommands.Open"
        CanExecute="CanOpenWindow"
        Executed="OpenWindow">
    </CommandBinding>
</Window.CommandBindings

<Button
    Content="Open Another Window"
    Command="ApplicationCommands.Open"
    CommandParameter="????">
</Button>

在我的代码中:

Private Sub OpenWindow(sender As Object, e As ExecutedRoutedEventArgs)
   Dim win As New Window
   win = DirectCast(e.Parameter, Window)
   win.Show()
End Sub

我不知道什么可以代替问号来完成这项工作。

PS:我认为声望点比我多的人应该创建一个名为“Commanding”的新标签。

【问题讨论】:

  • Commandingcommand...您用 Google 搜索过您的问题吗?
  • @Codexer 是的,但是“command”也可以指命令窗口(这是查询网络时最常见的结果),而“commanding”是 Visual Studio 中唯一的用法。是的,我咨询了 Google 教授,但未能获得有用的信息,所以才发布了这篇文章。
  • 好的,那你为什么不能直接连接一个事件呢?还有一些方法可以完成你所需要的,调解器,MVVM 等......
  • CommandParameters 用于根据某个值定义用户是否可以使用按钮。 E.G 如果用户想使用搜索功能,我不希望用户能够点击搜索按钮,除非他们在TextBox 中写了一些东西。 CommandParameters 可以帮助您检查TextBox 上的值,看看它是否包含一些文本/值。
  • @Codexer 首先,如果我知道如何“连接一个事件”,我就不会发布我的问题。其次,我已经准备好必要的事件,我的问题在于唤起它。因此,您的评论没有帮助。

标签: wpf vb.net command


【解决方案1】:

您可以将CommandParmeter 属性设置为窗口类型

<Button
    Content="Open Another Window"
    Command="ApplicationCommands.Open"
    CommandParameter="{x:Type local:Window1}">
</Button>

Private Sub OpenWindow(sender As Object, e As ExecutedRoutedEventArgs)
    Dim type = DirectCast(e.Parameter, Type)
    Dim win = DirectCast(Activator.CreateInstance(type), Window)
    win.Show()
End Sub

【讨论】:

  • 您 (mm8) 始终知道如何做我需要做的事情 - 谢谢。
猜你喜欢
  • 2015-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多