我有一个相对简单的情况,我想在第一次点击后用“中止”按钮重新调整“开始”按钮。
我想知道使用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元素等天真的解决方案。如果可能的话,我更愿意使用声明式方法。谢谢!
答案 0 :(得分:4)
您是否尝试将Visibility
属性设置为Collapsed
而不是Hidden
?如果这样做,未使用的按钮不应使用任何布局空间。
答案 1 :(得分:2)
如果它对您来说是可行的选项,您可以尝试下载WPF工具包并使用VisualStateManager创建具有多个状态的单个控件。
所有内容都可以在XAML中以声明方式完成,并且在各州之间切换非常简单......特别是如果您对Silverlight开发非常熟悉。
答案 2 :(得分:0)
我不是故意嗤之以鼻,但我不会这样做,除非你也改变视觉状态和按钮的外观,让人感觉像是有某种行为的东西,比如动画切换开关或其他东西。如果该按钮启动一个运行缓慢并且您希望能够中止它的进程,我认为(a)有一个单独的进度对话框显示状态和取消选项或(b)启用该状态和取消控制窗口的不同部分将与其他用户界面更加一致。此外,意外双击会立即取消操作,这可能是奇怪的。
答案 3 :(得分:0)
单击该按钮时,为该按钮分配不同的命令并更改标题。然后,当它被点击时,它将在后面的代码中转到一个完全不同的处理程序。