Сетка данных WPF выбрала строку и событие привязки к ней - PullRequest
0 голосов
/ 03 января 2019

Привет, у меня есть DataGrid с несколькими строками, и теперь, когда я выбираю одну строку, я хочу одновременно запустить событие с этим выбором, но у меня возникла проблема.

Это мои пользовательские ресурсы управления:

    <UserControl.Resources>
        <Style x:Key="CollapsedRow" TargetType="{x:Type DataGridRow}">

            <EventSetter Event="MouseLeftButtonDown" Handler="OnGroupChange" />

            <Setter Property="DetailsVisibility" Value="Collapsed" />

            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="DodgerBlue" />
                </Trigger>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Background" Value="SteelBlue"/>
                    <Setter Property="Foreground" Value="White"/>
                </Trigger>
            </Style.Triggers>

        </Style>
    </UserControl.Resources

И мой datagrid xaml прост:

<DataGrid RowStyle="{StaticResource CollapsedRow}" AutoGenerateColumns="false" CanUserAddRows="false" ItemsSource="{Binding Applications}" >

Как видите, у меня есть установщик событий для одной мышищелчок, который вызовет событие и вызовет изменение цвета фона строки, если он выбран.Но это работает так: сначала нужно выбрать строку одним щелчком, а затем запустить событие, которое является вторым щелчком.Есть ли способ сделать это одним щелчком мыши?

1 Ответ

0 голосов
/ 03 января 2019

Событие MouseLeftButtonDown наступает до того, как изменяется выбор строки. Это означает, что свойство IsSelected вашей строки будет false. Вы можете использовать событие Selected , которое запускается после изменения выбора. Просто добавьте новый обработчик, например

<EventSetter Event="Selected" Handler="OnSelected"/>

и

private void OnSelected(object sender, RoutedEventArgs e)
{
    Debug.WriteLine("Column selection change, IsSelected = " + ((DataGridRow)sender).IsSelected);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...