我试图在style.setter中使用转换器给出条件样式,如下所示,
<Style TargetType="DataGrid">
<Setter Property="Background" Value="{Binding Converter={StaticResource cc}}" />
</Style>
并且知道在UWP中使用转换器没有提供支持。所以请任何人建议我使用style.setter中的转换器在UWP中提供条件样式的更好方法
答案 0 :(得分:5)
不,我们在UWP中没有Trigger
支持。
保持与UWP和Windows Phone 8的触发器一样多 由msft删除。我们可以实现那些使用Interactivity核心。 Blend(IDE)非常支持在这些技术中创建触发器。
Blend允许为应用程序Here定义行为。
我们可以定义
DataTrigger
使用DataTrigger触发器根据数据绑定属性的值调用操作EventTrigger
使用EventTrigger触发器根据鼠标单击,页面加载或其他交互等事件调用操作。KeyTrigger
当键盘上按下组合键时,使用KeyTrigger触发器调用操作。注意: - 这是Windows手机可用的触发器,请确保UWP在混合SDK中具有此触发器
解决方法是使用DataTriggerBehavior
和ChangePropertyAction
来完成此操作。
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使用可视状态管理器的触发器