Лучший способ конвертировать триггеры wpf в silverlight? - PullRequest
2 голосов
/ 18 апреля 2010

Я разработал несколько пользовательских элементов управления в приложении wpf, которые используют триггеры. Какой самый быстрый способ преобразовать код, чтобы у меня была единая база кода, которая работает как в приложении wpf, так и в приложении silverlight. Вот пример кода:

 <Style x:Key="sButtonAction" TargetType="Button">
  <!--<Setter Property="BitmapEffect" Value="{StaticResource BannerEffect}" />-->
  <Setter Property="Height" Value="25" />
  <Setter Property="Margin" Value="4" />
  <Setter Property="Cursor" Value="Hand" />
  <Setter Property="Template">
   <Setter.Value>
    <ControlTemplate TargetType="Button">
     <Border x:Name="PART_Border" CornerRadius="10"
       BorderThickness="{StaticResource sBorderThicknessStandard}"
       BorderBrush="{StaticResource bColorBorder}"
       Background="{StaticResource ButtonActionBackground}">
      <TextBlock x:Name="PART_TextBlock" Margin="5,2,5,2" HorizontalAlignment="Center"
        VerticalAlignment="Center" Foreground="White">
        <ContentPresenter HorizontalAlignment="Center"
         VerticalAlignment="Center" /></TextBlock>
     </Border>
     <ControlTemplate.Triggers>
      <Trigger Property="IsMouseOver" Value="True">
       <Setter TargetName="PART_TextBlock" Property="Foreground"
         Value="#990000"></Setter>
      </Trigger>
      <Trigger Property="IsPressed" Value="True">
       <Setter TargetName="PART_Border" Property="Background"
         Value="{StaticResource ButtonActionBackgroundSelected}"></Setter>
      </Trigger>
     </ControlTemplate.Triggers>
    </ControlTemplate>
   </Setter.Value>
  </Setter>
 </Style>

1 Ответ

3 голосов
/ 19 апреля 2010

Как бы болезненно это ни звучало, лучше всего поменять триггеры на использование VisualStateManager. Он включен в WPF 4.0, и если вы застряли на более ранней версии, вы можете получить его из codeplex.

Отстой, что Silverlight не поддерживает триггеры, но если вам нужно поддерживать обе платформы, я думаю, что это ваш лучший выбор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...