按下WPF按钮视觉状态,按钮失去焦点后保持视觉状态“运行”

时间:2011-12-29 09:44:28

标签: wpf button

我正在使用wpf c#Window。  我有一个如下定义的按钮:

<Button x:Name="but" Style="{DynamicResource ButtonStyle13}" / >

我的ButtonStyle是这样的:

<VisualState x:Name="Pressed">
 //bla bla (my style) goes here

 

现在,当我使用这种视觉状态时,按下按钮时视觉效果会发生变化,但之后会恢复正常。我希望按钮处于“按下”状态,它将保持“按下”直到我按下另一个按钮。

我试着改变它:

<VisualState x:Name="myPre">

然后在代码中使用:

 VisualStateManager.GoToElementState(but, "myPre", true);

完全没有剂量。然后我用

 VisualStateManager.GoToState(but, "myPre", true);

只要鼠标悬停在按钮上,就会按下我的按钮,但是当它失去焦点(鼠标移动)时,它会恢复正常。

我希望我已经清楚了。 如何让按钮保持在按下的视觉状态,直到我决定(在代码内)取消按钮?

2 个答案:

答案 0 :(得分:6)

如果您需要Button按下它后将保持按下状态 - 然后使用ToggleButton

<ToggleButton IsChecked='True'/>

答案 1 :(得分:0)

正如我所看到的,这个问题已经有一段时间了,但这与我遇到的问题完全相同。 Anatolii Gabuza 的回答让我走上了正轨。 我不知道以前是否有过,但现在有以下可能性。

<VisualStateGroup x:Name="CheckStates">
        <VisualState x:Name="Checked">
          <Storyboard>
            <... do some Animation.. >
          </Storyboard>
        </VisualState>
        <VisualState x:Name="Unchecked" />
        <VisualState x:Name="Indeterminate" />
      </VisualStateGroup>

在msdn中有如下解释: MSDN-Article ToggleButton Styles and Templates