2015-08-19 17 views
5

Ich habe zwei ListView, jede Liste enthält einige Zeilen. Ich möchte die Funktion nach der Zeilenauswahl aufrufen. Aber ich habe ein Problem, Ereignis "GotFocus" feuern, wenn Zeile ausgewählt oder Schaltfläche in dieser Zeile geklickt hat. Wenn ich <i:EventTrigger EventName="Selected"> verwende, wird es nicht ausgelöst, wenn die Zeile in der Tabelle ausgewählt ist. Was ich tun muss?Wpf listview Element Auswahl Ereignis

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"); 
    } 
} 
} 
+0

Was ist 'Selected' Ereignis? Wo findest du es? – Sinatr

+0

A191919

Antwort

Verwandte Themen