C # WPF Обработка событий двойного щелчка из нескольких, динамически генерировать сетки данных через один обработчик - PullRequest
0 голосов
/ 14 октября 2011

В моей текущей реализации я динамически создаю вкладки и сетки.

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

this.AddHandler(DataGrid.MouseDoubleClickEvent, new RoutedEventHandler    (Generic_DoubleClick));    

Это обрабатывает любой двойной щелчок даже вне сетки, а не специально для сетки.

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

Спасибо.

1 Ответ

1 голос
/ 14 октября 2011

Обрабатывать перенаправленное событие двойного щелчка из строки сетки данных в сети данных.

   <tk:DataGrid>
        <tk:DataGrid.Resources>
            <Style TargetType="{x:Type tk:DataGridRow}">
                <EventSetter Event="MouseDoubleClick"
                             Handler="DataGridRow_MouseDoubleClick"/>
            </Style>
        </tk:DataGrid.Resources>
        <tk:DataGrid.ItemsSource>
            <x:Array Type="{x:Type TextBlock}">
                <TextBlock Text="1" Tag="1.1"/>
                <TextBlock Text="2" Tag="1.2"/>
                <TextBlock Text="3" Tag="1.3"/>
                <TextBlock Text="4" Tag="1.4"/>
            </x:Array>
        </tk:DataGrid.ItemsSource>
        <tk:DataGrid.Columns>
            <tk:DataGridTextColumn Header="Text" Binding="{Binding Text}"/>
            <tk:DataGridTextColumn Header="Tag" Binding="{Binding Tag}"/>
        </tk:DataGrid.Columns>
    </tk:DataGrid>

В коде позади

    private void DataGridRow_MouseDoubleClick(
           object sender, MouseButtonEventArgs e)
    {
        var dgRow = sender as Microsoft.Windows.Controls.DataGridRow;
        var cellContentElement = e.OriginalSource as UIElement;
    }

Бонус cellContentElement - это элемент содержимого ячейки, в которой дважды щелкнули строку ... например, в случае DataGridTextColumn в ячейке будет TextBlock.

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