2013-05-12 2 views
0

Я пытаюсь изменить состояние всех кнопок в моей программеWPF VisualStateManager.GoToState

Я получил этот стиль для кнопки:

<Style TargetType="{x:Type Button}"> 
     <Setter Property="Foreground" Value="White"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Button}"> 
        <Grid> 
         <VisualStateManager.VisualStateGroups> 
          <VisualStateGroup x:Name="CommonStates"> 
           <VisualState x:Name="Normal"/> 
           <VisualState x:Name="StateMouseOver"> 
            <Storyboard> 
             <ColorAnimation Storyboard.TargetName="UpperBorder" Duration="00:00:0.5" Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" To="#FF5086C4"/> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="StatePressed"> 
            <Storyboard> 
             <ColorAnimation Storyboard.TargetName="UpperBorder" Duration="00:00:0.05" Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" To="#FF21214E"/> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="StateDisabled"> 
            <Storyboard> 
             <DoubleAnimation Storyboard.TargetName="UpperBorder" Duration="00:00:0.5" Storyboard.TargetProperty="(UIElement.Opacity)" To="0"/> 
            </Storyboard> 
           </VisualState> 
          </VisualStateGroup> 
         </VisualStateManager.VisualStateGroups> 
         <Border x:Name="Lower" Cursor="Hand" BorderThickness="1" CornerRadius="4" Background="Gray" ></Border> 
         <Border MouseEnter="UpperBorder_MouseEnter" x:Name="UpperBorder" Cursor="Hand" CornerRadius="4" Background="#FF0657E8"> 
          <Border.Effect> 
           <DropShadowEffect BlurRadius="10"/> 
          </Border.Effect> 
         </Border> 
         <ContentPresenter Cursor="Hand" Margin="8,8,8,8" HorizontalAlignment="Center" /> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

в этом случае: MouseEnter="UpperBorder_MouseEnter Я хочу, чтобы изменение вступит в силу на все кнопки в моей программе (но функция VisualStateManager.GoToState принимает в качестве параметра только специальную кнопку)
как я могу это сделать?

+0

Вы говорите, что если у вас есть три кнопки и пользовательские мыши над одной кнопкой, вы хотите, чтобы все три границы кнопок менялись одновременно? –

ответ

0

У button уже есть состояние MouseOver в группе CommonStates. См. Button Styles and Templates. Автоматическая настройка состояния в классе Button при наведении мыши.

Это то, что вы хотите?