我正在尝试将旧的Windows Phone 7.5 Silverlight应用程序转换为新的WinRT Universal应用程序,并且这段代码有问题:
<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实现相同的功能,但我无法弄清楚。谁能帮我或以好的榜样指导我。我被困在这里...
最佳答案
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}}"/>
关于winrt-xaml - Windows Phone 8.1中带有VisualStates的DataTrigger,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27481555/