【发布时间】:2016-10-01 17:39:12
【问题描述】:
我在 UWP 中有一个绑定的列表视图,我想根据一些属性在 ItemTemplate 中显示或隐藏一些控件
我使用的 XAML 在这里用于绑定 ObservableCollection
<ListView x:Name="lvwMovieWatchlist" ItemsSource="{x:Bind Books}" Margin="10">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate x:DataType="data:BookModel">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Width="156" Height="200">
<Image Source="{Binding CoverImage}" Stretch="UniformToFill"/>
</Border>
<StackPanel Grid.Column="1" Orientation="Vertical">
<TextBlock Text="{Binding Title}" Style="{StaticResource TitleTextBlockStyle}" TextWrapping="NoWrap" Margin="9.6,0"/>
<TextBlock Text="{Binding Name}" Style="{StaticResource SubtitleTextBlockStyle}" TextWrapping="NoWrap" Margin="9.6,0"/>
<StackPanel Orientation="Horizontal" Margin="10">
<Button Name="Btn_Download" Tag="{Binding}" Click="Btn_Download_Click"> DOWNLOAD</Button>
<Button Name="Btn_Read" Tag="{Binding}" Click="Btn_Read_Click"> READ</Button>
</StackPanel>
</StackPanel>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
这里有两个按钮 Btn_Download 和 Btn_Read 如果 Status 属性是“读取”,那么我想将 Btn_Read 的可见性设置为可见,否则显示 Btn_Download 按钮
在 WPF 中,我有触发器来实现类似的效果
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Status}" Value="read">
<Setter TargetName="Btn_Read" Property="Visibility" Value="Visible"/>
<Setter TargetName="Btn_Download" Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</DataTemplate.Triggers>
但在 UWP 中没有触发器,只有 VisualStateManager.VisualStateGroups 可用。 那么如何在 ItemTemplate 中使用 VisualStateGroup 来实现它
【问题讨论】:
标签: c# xaml win-universal-app uwp