2015-08-19 22 views
5

İki ListView'im var, her liste bazı satırların içerir. Satır seçiminden sonra işlevi çağırmak istiyorum. Ama bir sorunum var, satır seçildiğinde veya bu satırdaki buton tıklandığında "GotFocus" etkinliği başlatılıyor. <i:EventTrigger EventName="Selected"> kullandığımda, tablodaki satır seçildiğinde yanmıyor. Ne yapmam gerekiyor?Wpf liste görünümü öğesi seçim olayı

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> 

Kodu:

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

'Selected' olayı nedir? Nerede buluyorsunuz/kullanıyorsunuz? – Sinatr

+0

A191919

cevap

İlgili konular