在WPF中重新利用按钮的最佳做法?

时间:2009-11-04 18:10:35

标签: c# wpf button

我有一个相对简单的情况,我想在第一次点击后用“中止”按钮重新调整“开始”按钮。

我想知道使用XAML实现此按钮再利用的最佳方法是什么,希望以声明方式而不是代码隐藏黑客:

<DockPanel>
  <Button x:Name="btnStart">Start</Button>
</DockPanel>

我尝试使用两个不同的Button并切换每个Visibility属性,但它不会在DockPanel内重排布局。我希望按钮共享相同的布局空间,但相互排他。这也有一个问题,即只有最后一个元素填充停靠面板,第一个元素被压缩到左边。

<DockPanel>
  <Button x:Name="btnStart">Start</Button>
  <Button x:Name="btnAbort" Visibility="Hidden">Abort</Button>
</DockPanel>

我更喜欢两种Button方法,以便我可以拥有单独的Click事件处理程序。请不要建议动态添加/删除Button元素等天真的解决方案。如果可能的话,我更愿意使用声明式方法。谢谢!

4 个答案:

答案 0 :(得分:4)

您是否尝试将Visibility属性设置为Collapsed而不是Hidden?如果这样做,未使用的按钮不应使用任何布局空间。

答案 1 :(得分:2)

如果它对您来说是可行的选项,您可以尝试下载WPF工具包并使用VisualStateManager创建具有多个状态的单个控件。

所有内容都可以在XAML中以声明方式完成,并且在各州之间切换非常简单......特别是如果您对Silverlight开发非常熟悉。

答案 2 :(得分:0)

我不是故意嗤之以鼻,但我不会这样做,除非你也改变视觉状态和按钮的外观,让人感觉像是有某种行为的东西,比如动画切换开关或其他东西。如果该按钮启动一个运行缓慢并且您希望能够中止它的进程,我认为(a)有一个单独的进度对话框显示状态和取消选项或(b)启用该状态和取消控制窗口的不同部分将与其他用户界面更加一致。此外,意外双击会立即取消操作,这可能是奇怪的。

答案 3 :(得分:0)

单击该按钮时,为该按钮分配不同的命令并更改标题。然后,当它被点击时,它将在后面的代码中转到一个完全不同的处理程序。

相关问题