Я разработал WPF UserControl, который предназначен для использования в качестве списка выбора следующим образом:
- DataGrid, привязанный к CollectionView объектов (например, Employees)
- TextBox над DataGrid, который можно использовать для фильтрации элементов, отображаемых в DataGrid.
Я хочу предоставить команду, которая будет выполнена, когда пользователь дважды щелкнет строку в DataGrid.Затем контейнер может реагировать на это, делая что-то с SelectedItem в DataGrid.
До сих пор я пытался обработать двойной щелчок следующим образом:
<DataGrid IsReadOnly="True">
<DataGrid.InputBindings>
<MouseBinding MouseAction="LeftDoubleClick" Command="... />
</DataGrid.InputBindings>
...
Однако двойнойСобытие -click по-прежнему срабатывает, когда пользователь щелкает в заголовке DataGrid.Я хотел бы иметь возможность ограничить его так, чтобы команда выполнялась только тогда, когда двойной щелчок находится в теле DataGrid.Есть ли декларативный способ сделать это?
ОБНОВЛЕНИЕ
Я только начинаю разбираться с WPF и MVVM и действительно ищу руководство о том, как реализоватьмногоразовые компоненты низкого уровня, подобные этому.Любые общие советы также будут с благодарностью приняты и одобрены.В нынешнем виде я предполагаю, что я хочу, чтобы этот UserControl:
Предоставлял свойство зависимости "SelectedItem", которое привязано к SelectedItem объекта DataGrid
Предоставьте RoutedEvent "ItemDoubleClick" или аналогичный, который запускается, когда пользователь дважды щелкает строку.
Реализует ICommandSource
и вызывает CommandHelpers.ExecuteCommandSource(this)
из строки double-обработчик события click.