Wpf listview item selection event
10,757
There is no Selected
event in ListView
, you have to use SelectionChanged
event.
Author by
A191919
Updated on July 24, 2022Comments
-
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"); } } }