ToggleButton禁用单击按钮时设置IsChecked行为

时间:2014-04-21 18:19:51

标签: .net xaml togglebutton

当我点击切换按钮时,是否有删除设置IsChecked ToggleButton属性的行为?我希望通过绑定到自定义属性来处理IsChecked属性。

3 个答案:

答案 0 :(得分:1)

因此,您希望控件仅通过绑定处理其IsChecked状态,并禁止用户输入。您可以设置IsEnabled="False" but then it will appear a bit opaque in the已禁用状态,除非您相应地更改控件模板。

我认为您想要的更多的是省略用户输入但仍处理您的IsChecked的方法,所以我建议将其设置为;

<ToggleButton IsHitTestVisible="False" IsTabStop="False" IsChecked="{Binding blah}"/>

希望这会有所帮助,欢呼。

答案 1 :(得分:0)

我知道这个问题已经很久了,但我认为我的回答可以帮助别人。

所以我的问题与导航切换按钮有关。我在我的代码中将IsChecked属性设置为true并显示了相关视图,但是当用户按下它时,ToggleButton的设计正在改变(而视图保持不变)。所以最终我显示了视图,但ToggleButton未经检查,后面的IsChecked属性设置为true。完全是疯了。

为了解决这个问题,我制作了自己非常简单的自定义控件:

class CustomToggleButton : ToggleButton
{
    protected override void OnToggle()
    {
        if (IsChecked == false)
        {
            base.OnToggle();
        }
    }
}

现在ToggleButton只取消了我的代码。

答案 2 :(得分:0)

很好的解决方案Chris W.谢谢!如果某人仍然希望通过单击按钮进行检查但又阻止从UI取消选中,则:

<Style TargetType="ToggleButton" x:Key="MyToggle">
  <Style.Triggers>
    <Trigger Property="IsChecked" Value="True">
      <!-- Prevents unchecking -->
      <Setter Property="IsHitTestVisible" Value="False"/>
      <Setter Property="IsTabStop" Value="False"/>
    </Trigger>
  </Style.Triggers>
</Style>