我有一个 ToggleButtons 列表被用作 ListBox 中的 ItemTemplate,类似于 this answer使用列表框的多选模式。但是,我需要确保始终选择至少一项。
我可以通过在 ListBox.SelectionChanged 事件上将一个项目重新添加到 ListBox 的 SelectedItems 集合中来从 ListBox 获得正确的行为,但我的 ToggleButton 仍然移出其切换状态,因此我认为我需要在此过程中更早地停止它。
我想这样做而不在最后一个按钮 Selected 上设置 IsEnabled="False"因为我更喜欢保持 Enabled 视觉样式而不必重做我的按钮模板。有任何想法吗?
最佳答案
您可以覆盖 OnToggle
通过不调用基本实现来防止切换状态的方法:
public class LockableToggleButton : ToggleButton
{
protected override void OnToggle()
{
if (!LockToggle)
{
base.OnToggle();
}
}
public bool LockToggle
{
get { return (bool)GetValue(LockToggleProperty); }
set { SetValue(LockToggleProperty, value); }
}
// Using a DependencyProperty as the backing store for LockToggle. This enables animation, styling, binding, etc...
public static readonly DependencyProperty LockToggleProperty =
DependencyProperty.Register("LockToggle", typeof(bool), typeof(LockableToggleButton), new UIPropertyMetadata(false));
}
关于wpf - 如何在不设置 IsEnabled 的情况下防止 ToggleButton 被切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2548863/