WPF - 使用Windows Phone 8.1中的触发器自定义视图

pio*_*lut 0 wpf triggers windows-phone-8.1

我想在Windows Phone 8.1应用程序(WPF)中自定义我的视图.在我的桌面项目中,我使用了以下内容:

<Grid>
  <Grid.Style>
    <Style>
      <Style.Triggers>
        <DataTrigger Binding="{Binding IsTrueValue}" Value="False">
          <Setter Property="Visibility" Value="Hidden" />
        </DataTrigger>
        <DataTrigger Binding="{Binding IsTrueValue}" Value="True">
          <Setter Property="Visibility" Value="Visible" />
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </Grid.Style>
</Grid> 
Run Code Online (Sandbox Code Playgroud)

不幸的是,Style.Triggers无法识别.

谢谢你的帮助.

Rob*_*SFT 8

Windows Phone不使用WPF.您可以使用Windows Phone Silverlight或Windows Phone运行时代码.所有这三个环境都使用Xaml,但可用的确切类别是不同的.

虽然没有直接支持触发器,但Behaviors SDK定义了一个类似于Windows运行时应用程序的DataTrigger行为.行为包含在Blend的资产窗格中,可以在其设计器中以可视方式设置.

xmlns:Interactivity="using:Microsoft.Xaml.Interactivity" 
xmlns:Core="using:Microsoft.Xaml.Interactions.Core"


<Grid>
    <Interactivity:Interaction.Behaviors>
        <Core:DataTriggerBehavior Binding="{Binding IsTrueValue}" Value="True">
            <Core:ChangePropertyAction PropertyName="Visibility">
                <Core:ChangePropertyAction.Value>
                    <Visibility>Visible</Visibility>
                </Core:ChangePropertyAction.Value>
            </Core:ChangePropertyAction>
        </Core:DataTriggerBehavior>
        <Core:DataTriggerBehavior Binding="{Binding IsTrueValue}" Value="False">
            <Core:ChangePropertyAction PropertyName="Visibility">
                <Core:ChangePropertyAction.Value>
                    <Visibility>Collapsed</Visibility>
                </Core:ChangePropertyAction.Value>
            </Core:ChangePropertyAction>
        </Core:DataTriggerBehavior>
    </Interactivity:Interaction.Behaviors>
</Grid>
Run Code Online (Sandbox Code Playgroud)

正如Vlad建议的那样,您也可以使用VisualStateManager而不是直接设置Visibility属性.您可以使用DataTriggerBehavior来触发GoToStateAction.

另请注意,Visibility.Hidden对Windows Phone Runtime或Windows Phone Silverlight无效.两者都允许Visible和Collapsed选项.