SL4中的statemanager问题

时间:2011-09-16 08:22:13

标签: silverlight-4.0 visualstatemanager togglebutton

我有一个togglebotton

<ToggleButton Padding="1">
                                <TextBlock>
            <Underline>Week</Underline>
                                </TextBlock>
                            </ToggleButton>

以及我需要更改的内容是在取消选中togglebutton时将下划线设置为false,并在控件被ckecked时将其设置为true。

现在我只有

 <ToggleButton Padding="1">
 <VisualStateManager.VisualStateGroups>
                                    <VisualStateGroup x:Name="CommonStates">

                                        <VisualState x:Name="IsChecked">

                                            <Storyboard Duration="0:0:0">

我无法弄明白接下来的事情。

我不会坚持使用textblock的概念。 ToggleButton中的文本应该是下划线,这就是全部。

1 个答案:

答案 0 :(得分:0)

要使用VisualStateManager,您必须重新定义ToggleButton的模板 - 查看MSDN ToggleButton Syles。而不是你可以使用Blend的触发器。首先添加由Expression Blend SDK提供的项目System.Windows.Interactivity.dll和Microsoft.Expression.Interactions.dll,然后使用以下代码:

<ToggleButton x:Name="toggleButton" Padding="1">
 <TextBlock x:Name="textBlock">
   <i:Interaction.Triggers>
     <ei:DataTrigger Binding="{Binding IsChecked, ElementName=toggleButton}" Value="True">
     <ei:ChangePropertyAction PropertyName="TextDecorations">
      <ei:ChangePropertyAction.Value>
       <TextDecorationCollection>Underline</TextDecorationCollection>
      </ei:ChangePropertyAction.Value>
     </ei:ChangePropertyAction>
    </ei:DataTrigger>
     <ei:DataTrigger Binding="{Binding IsChecked, ElementName=toggleButton}" Value="False">
      <ei:ChangePropertyAction PropertyName="TextDecorations"/>
     </ei:DataTrigger>
    </i:Interaction.Triggers>
  Week
 </TextBlock>
</ToggleButton>

ei:和i:如下:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"