我正在尝试将旧的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/

10-13 06:25