【问题标题】:ToggleButton disable setting IsChecked behavior on button clickedToggleButton 在单击按钮时禁用设置 IsChecked 行为
【发布时间】:2014-06-05 20:44:19
【问题描述】:

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

【问题讨论】:

  • 只是为了确保我理解正确,您不希望它在单击时更新 ischecked,而是希望它仅通过绑定更新 ischecked?
  • 是的,我只想通过绑定更新 IsChecked,而 onClick 的 IsChecked 干扰了我的绑定

标签: .net xaml togglebutton


【解决方案1】:

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

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

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

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

现在 ToggleButton 仅从我的代码中取消选中。

【讨论】:

    【解决方案2】:

    很好的解决方案 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>
    

    【讨论】:

      【解决方案3】:

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

      我认为您想要的更多是一种省略用户输入但仍处理您的IsChecked 的方式,因此我建议将其设置为;

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

      希望这会有所帮助,干杯。

      【讨论】:

      • 但是现在点击不再触发他的代码了。
      • @Martin 阅读了他的 cmets,我要求他澄清这一点.. ;)
      • 谢谢!我没有想到这一点,但是,这仍然会禁用鼠标悬停效果,我认为我可以通过一些样式来操作。
      • 啊,我想您只是想将它用作静态显示,如果它不再接受点击,则不考虑包含鼠标悬停。如果是这种情况,我可能不得不考虑另一种方法,但如果它对你有用并且问题得到解决,那就太酷了。干杯
      • @Chris W.:我假设他想处理点击,更新他的视图模型(也许验证),并让视图严格遵守视图模型状态 - 没有一个视图控件自行决定改变它的状态:)
      猜你喜欢
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 2017-04-04
      相关资源
      最近更新 更多