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

Div*_*kar 6 xaml win-universal-app

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

    <Style TargetType="DataGrid">
        <Setter Property="Background" Value="{Binding Converter={StaticResource cc}}" />
    </Style>
Run Code Online (Sandbox Code Playgroud)

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

Eld*_*dho 5

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

为了保持尽可能多的亮度,msft删除了UWP和Windows Phone 8的触发器。我们可以使用交互核心来实现这些目标。Blend(IDE)为在这些技术中创建触发器提供了强大的支持。

Blend允许在此处定义应用程序的行为。
我们可以定义

  1. DataTrigger 使用DataTrigger触发器基于数据绑定属性的值调用操作
  2. EventTrigger 使用EventTrigger触发器可基于事件(例如鼠标单击,页面加载或其他交互)来调用操作。
  3. KeyTrigger 当在键盘上按下组合键时,可以使用KeyTrigger触发器来调用一个动作。

注意:-这是Windows Phone可用的触发器,请确保UWP在blend SDK中具有此触发器

一种解决方法是与DataTriggerBehavior配合使用ChangePropertyAction来完成此任务。

xmlns:ec="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions" x:Class="XXX_XXXX"
Run Code Online (Sandbox Code Playgroud)

这对我有用

<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>
Run Code Online (Sandbox Code Playgroud)

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

/sf/answers/2235348951/中的类似答案

使用可视状态管理器的触发器的MSDN参考