有没有更好的方法在uwp中提供条件样式?

时间:2016-03-22 10:20:58

标签: xaml win-universal-app

我试图在style.setter中使用转换器给出条件样式,如下所示,

    <Style TargetType="DataGrid">
        <Setter Property="Background" Value="{Binding Converter={StaticResource cc}}" />
    </Style>

并且知道在UWP中使用转换器没有提供支持。所以请任何人建议我使用style.setter中的转换器在UWP中提供条件样式的更好方法

1 个答案:

答案 0 :(得分:5)

不,我们在UWP中没有Trigger支持。

  

保持与UWP和Windows Phone 8的触发器一样多   由msft删除。我们可以实现那些使用Interactivity核心。 Blend(IDE)非常支持在这些技术中创建触发器。

Blend允许为应用程序Here定义行为。
我们可以定义

  1. DataTrigger使用DataTrigger触发器根据数据绑定属性的值调用操作
  2. EventTrigger使用EventTrigger触发器根据鼠标单击,页面加载或其他交互等事件调用操作。
  3. KeyTrigger当键盘上按下组合键时,使用KeyTrigger触发器调用操作。
  4. 注意: - 这是Windows手机可用的触发器,请确保UWP在混合SDK中具有此触发器

    解决方法是使用DataTriggerBehaviorChangePropertyAction来完成此操作。

    xmlns:ec="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions" x:Class="XXX_XXXX"
    

    这对我有用

    <DataGrid x:Name="MyGrid"
                       Stretch="None"
                       HorizontalAlignment="Stretch" 
                       VerticalAlignment="Top">
      <interactivity:Interaction.Triggers>
       <ec:DataTrigger Binding="{Binding IsBackgroundBlue}" Value="True">
           <ec:ChangePropertyAction TargetObject="{Binding ElementName=MyGrid}" PropertyName="Background" Value="Blue" />
         </ec:DataTrigger>
        <!--  You could add your conditions here />  -->
      </interactivity:Interaction.Triggers>
      </DataGrid>
    

    请注意,这可能不是正确的语法我现在没有IDE

    https://stackoverflow.com/a/31933556/1876572

    中的类似答案

    Msdn reference使用可视状态管理器的触发器

相关问题