1

这是我目前的设置:

我有一个 WPF 应用程序,它有一个复制按钮,它接受一个应用程序目录并将其复制到另一个目录。完成后,我有另一个按钮可以从新位置启动应用程序。理想情况下,我希望只有 1 个按钮,在复制完成后,按钮的文本会更改为“启动”,然后单击它会启动应用程序。然而,用户需要能够通过再次单击按钮来重新复制,但这一次,它应该说“复制”。这是可能的,甚至值得吗?

4

4 回答 4

2

最简单的方法是将状态存储在可从您的代码隐藏访问的变量中,并if在按钮OnClick决定做什么时声明。

这可能不值得麻烦,因为改变其含义的按钮可能会让您的最终用户感到困惑。我会做两个单独的按钮,但我会根据应用程序的状态有条件地启用或禁用它们。当复制是唯一有意义的操作时,[Copy]按钮将被启用,而[Run]按钮将被禁用。当状态发生变化时,这些按钮的启用/禁用状态也会发生变化。这将为您的应用程序的最终用户提供清晰的视觉提示,并使您的应用程序更容易使用各种 UI 测试自动化工具进行自动测试。

于 2012-10-03T18:10:06.183 回答
1

这绝对是可能的,但有两个按钮似乎要简单得多。您可以根据当前状态切换它们的可见性,因此当您希望能够启动时,“启动”按钮可见,而当您想要复制时,“复制”按钮可见。

这将使您的命令更简单(每个命令执行一个操作)。

于 2012-10-03T18:09:50.583 回答
1

一种方法是使用 a RelayCommand,然后使用 if 语句调用适当的函数。在这里RelayCommand定义。

于 2012-10-03T18:11:09.693 回答
1

我会创建两个CommandViewModels应该包含一个CommandHeader。然后你可以有一个包含这样一个模型的属性,Button.Content然后将绑定到Header当前的CommandViewModel,并且Button.Command将绑定到Command. 然后,您只需将该属性更改为 other CommandViewModel。(这甚至可以在第一个Command's中完成Execute。)

于 2012-10-03T18:14:00.930 回答