2014-04-21 83 views
2

有没有办法在单击切换按钮时删除设置IsChecked属性的行为ToggleButton?我想通过绑定到一个自定义属性来处理IsChecked属性。ToggleButton禁用设置点击按钮上的IsChecked行为

+0

为了确保我理解正确,您不希望它在点击时更新缺陷,而是希望它仅通过绑定更新缺陷。 –

+0

是的,我只想通过绑定来更新IsChecked,而onClick的IsChecked正在干扰我的绑定 – kotsumu

回答

1

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

我想你想会比较的方式,只是省略了用户输入,但仍然处理您的IsChecked,所以我会建议将其设置喜欢的东西;

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

希望这有助于欢呼声。

+0

但是现在点击不再触发他的代码。 – Martin

+0

@Martin阅读他的意见,我问他澄清说...;) –

+0

谢谢!我没有想到这一点,但是,这仍然禁用了鼠标悬停效果,我认为我可以使用一些小样式进行操作。 – kotsumu

0

我知道这个问题很老,但我认为我的答案可以帮助某人。

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

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

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

现在切换按钮是从我的代码只取消选中。