как получить значение из представления списка по событию двойного щелчка (WPF) - PullRequest
0 голосов
/ 16 июля 2010

У меня есть проблема, ребята, я хочу получить детализацию строки, когда я щелкаю эту строку в моем списке просмотра. Я знаю, как она работает в форме окна, но она отличается в WPF / Я использую C # wpf, пожалуйста, помогите мне заранее спасибо Shashank

Ответы [ 2 ]

1 голос
/ 16 июля 2010

Вы можете добавить обработчик событий в свои ListViewItems, добавив следующий XAML в ваш <Window.Resources>:

<Style TargetType="ListViewItem">
        <EventSetter Event="MouseDoubleClick" Handler="MyEventHandler" />
</Style>

Затем вы должны добавить обработчик событий в свой код:

 private void MyEventHandler(object sender, MouseButtonEventArgs e)
    {
        ListViewItem MyListViewItem = (ListViewItem)sender;
        MyClass MyObject = (MyClass)Item.Content;

        e.Handled = true;
    }

В этом примере MyObject содержит объект, связанный с ListViewItem, по которому щелкнули.Например, в одном из моих проектов у меня есть ListView, связанный с ObservableCollection<SongData>.Я бы тогда использовал следующий код:

  private void MyEventHandler(object sender, MouseButtonEventArgs e)
    {
        ListViewItem Item = (ListViewItem)sender;
        SongData Song = (SongData)Item.Content;

        // Example
        MessageBox.Show(Song.Title + " by " + Song.Artist);

        e.Handled = true;
    }

Я не знаю, продвинет ли это вас дальше, но это должно работать нормально.

Да, и, кстати, вы могли бытакже прикрепите обработчик событий к ListView, используйте свойство SelectedItem, но для меня это привело к некоторым проблемам, например, если вы щелкнете заголовок столбца или пробел при выбранном элементе, он также вызовет обработчик события.Поэтому я предпочел бы использовать свой первый предложенный подход.

1 голос
/ 16 июля 2010

Если у вас есть ссылка на ListView, вы можете использовать свойство SelectedItem .Вы также можете привязать SelectedItem к свойству в вашей ViewModel, а затем прочитать значение оттуда.Наконец, вы можете установить для IsSynchronizedWithCurrentItem значение True в вашем ListView и затем использовать:

CollectionViewSource.GetDefaultView(sourceList).CurrentItem

, где sourceList - это ItemsSource для ListView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...