2

古い W​​indow 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 を試しましたが、わかりません。誰かが私を助けたり、良い例を教えてくれますか? 私はこれでここで立ち往生しています...

4

1 に答える 1

8

DataTriggers は現在 WinRTでは使用できません。代わりにいくつかのオプションがあります。

  • VisualStateManagerを使用し、
  • たとえば、次のようにBehaviors 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}}"/>
    
于 2014-12-15T10:40:54.010 に答える