ListView选中时,旁边显示激活图标
效果¶
实现¶
前端界面:
<Window x:Class="TreeGrid.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TreeGrid" Title="MainWindow" Width="525" Height="350"
FontSize="14" WindowStartupLocation="CenterScreen">
<Window.Resources>
<DataTemplate x:Key="activateIconList" DataType="ListViewItem">
<StackPanel Height="30" Orientation="Horizontal">
<!-- 图片 -->
<Image Name="iconImg" Width="20" Height="20" Source="/Resource/定位.png" Visibility="Hidden"/>
<TextBlock Margin="10,0,0,0" VerticalAlignment="Center" Text="{Binding}"/>
</StackPanel>
<DataTemplate.Triggers>
<!-- 当 ListViewItem 被选中时 -->
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListViewItem}}, Path=IsSelected}" Value="True">
<Setter TargetName="iconImg" Property="Visibility" Value="Visible"/>
</DataTrigger>
<!-- 当 ListViewItem 未被选中时 -->
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListViewItem}}, Path=IsSelected}" Value="False">
<Setter TargetName="iconImg" Property="Visibility" Value="Hidden"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Window.Resources>
<Grid>
<ListView ItemTemplate="{StaticResource activateIconList}" ItemsSource="{Binding Items}"/>
</Grid>
</Window>
ViewModel:
public class MainWindowViewModel
{
public ObservableCollection<string> Items { get; set; } = new ObservableCollection<string>()
{
"第1个",
"第2个",
"第3个",
"第4个",
};
}