跳转至

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个",
    };
}

评论