2014-12-15 2 views
2

Я пытаюсь преобразовать старый Window Phone 7.5 приложения Silverlight для нового приложения WinRT универсального и у меня есть проблемы с этим пайсой коды:DataTrigger с VisualStates в Windows Phone 8,1

<Style TargetType="Button"> 
    <Setter Property="Visibility" Value="Collapsed"/> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Active}" Value="True"> 
      <Setter Property="Visibility" Value="Visible"/> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

Я использовал DataTrigger установить видимость управления на основе значения привязки.

В Windows Phone 8.1 приложение winrt отключено. Я попытался с помощью VisualStates достичь такой же функциональности, но я не могу понять это. Может ли кто-нибудь помочь мне или направить меня с хорошим примером. Я застрял здесь с этим ...

ответ

8

DataTriggers are not available currently in WinRT, у вас есть несколько вариантов: вместо

  • использование VisualStateManager,
  • использование Behaviours managed API, например так:

    <Button xmlns:i="using:Microsoft.Xaml.Interactivity" 
         xmlns:ic="using:Microsoft.Xaml.Interactions.Core"> 
        <Button.Style> 
         <Style TargetType="Button"> 
          <Setter Property="Visibility" Value="Collapsed"/> 
         </Style> 
        </Button.Style> 
        <i:Interaction.Behaviors> 
         <ic:DataTriggerBehavior Binding="{Binding Active}" Value="True" ComparisonCondition="Equal"> 
          <ic:ChangePropertyAction PropertyName="Visibility" Value="Visible"/> 
         </ic:DataTriggerBehavior> 
        </i:Interaction.Behaviors> 
    </Button> 
    
  • или вы можете просто использовать связывание с подходящим конвертером:

    <Button Visibility="{Binding Active, Converter={StaticResource BoolToVisibility}}"/> 
    
+0

Хорошо, спасибо! Я использовал ваш пример с поведением. – freshbm

+0

спасибо, искали решение для W10 за минуты :) –

+0

@Romasz Это прекрасно работает при навигации по странице, но DataTriggerBehavior не появляется при переходе на эту страницу. Я изменяю свой ViewModel после того, как произошла навигация, но почему-то не запускается. Любые идеи почему? – Thierry

Смежные вопросы