Показывать данные строк при двойном щелчке в WPF DataGrid

#.net #wpf #wpfdatagrid

#.net #wpf #wpfdatagrid

Вопрос:

На данный момент моя DataGrid показывает RowDetails при нажатии на строку. Но я хочу показывать RowDetails только при двойном щелчке.

Есть идеи по решению этой проблемы?

Спасибо!

Ответ №1:

например ,

 <DataGrid RowDetailsVisibilityMode="Collapsed">
    <DataGrid.RowStyle>
        <Style TargetType="{x:Type DataGridRow}">
            <EventSetter Event="MouseDoubleClick" Handler="RowDoubleClick"/>
        </Style>
    </DataGrid.RowStyle>
</DataGrid>
  
 private void RowDoubleClick(object sender, RoutedEventArgs e)
{
    var row = (DataGridRow)sender;
    row.DetailsVisibility = row.DetailsVisibility == Visibility.Collapsed ?
        Visibility.Visible : Visibility.Collapsed;
}
  

Комментарии:

1. Но еще один вопрос: теперь я хочу закрыть все остальные строки, потому что я хочу разрешить только одну строку с подробностями. Есть ли какой-либо способ повторить строки? Спасибо 😉

2. Это немного сложно, вам лучше всего было бы привязать видимость к какому-либо свойству ваших элементов, тогда у вас будет более легкий доступ, если вы хотите получить все строки, которые вам нужны, чтобы использовать ItemContainerGenerator я думаю.

3. Вы бы поместили этот код для события в MainWindowViewModel или вы бы поместили его в код MainWindow.xmal.cs позади? Я собираюсь поместить это в viewmodel. и посмотреть, что произойдет