Wpf listview item selection event

10,757

There is no Selected event in ListView, you have to use SelectionChanged event.

Share:
10,757
A191919
Author by

A191919

Updated on July 24, 2022

Comments

  • A191919
    A191919 almost 2 years

    I have two ListView, each list contains some row's. I want to call function after row selection. But i have a problem, event "GotFocus" firing when row selected or button in this row clicked. When i use <i:EventTrigger EventName="Selected"> it is not firing when row in table is selected. What i need to do?

    Xaml:

    <Grid>
        <ListView Width="200" Height="200" ItemsSource="{Binding Items}" HorizontalAlignment="Left">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Button Content="{Binding .}">
                    </Button>
                </DataTemplate>
            </ListView.ItemTemplate>
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="GotFocus">
                    <i:InvokeCommandAction Command="{Binding DataContext.TestCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type vm:MainWindow }}}"></i:InvokeCommandAction>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </ListView>
        <ListBox Width="200" Height="200" ItemsSource="{Binding Items}" HorizontalAlignment="Right">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Button Content="{Binding .}">
                    </Button>
                </DataTemplate>
            </ListBox.ItemTemplate>
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="GotFocus">
                    <i:InvokeCommandAction Command="{Binding DataContext.TestTestCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type vm:MainWindow }}}"></i:InvokeCommandAction>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </ListBox>
    </Grid>
    

    Code:

    namespace WpfApplication129
    {
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
    
        public MainWindow()
        {
            DataContext = new Data();
            InitializeComponent();
        }
    }
    public class Data
    {
        public ICommand TestCommand { get; set; }
        public ICommand TestTestCommand { get; set; }
        public List<string> Items { get; set; }
        public Data()
        {
            TestCommand = new RelayCommand(() => Test());
            TestTestCommand = new RelayCommand(() => TestTest());
            Items = new List<string>();
            Items.Add("first");
            Items.Add("Second");
            Items.Add("Third");
        }
        public void Test()
        {
            MessageBox.Show("Running");
        }
        public void TestTest()
        {
            MessageBox.Show("TestRunning");
        }
    }
    }