Использование EventSetters в Custom-Control для добавления MouseDoubleClick в ListViewItem - PullRequest
0 голосов
/ 22 ноября 2018

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

Это все уже отлично работает, с крошечной проблемой: я хочу, чтобы эти элементы (представленные внутри ListView) такжеавтозаполнение с помощью двойного щелчка.

Это, однако, представляет проблему для меня, так как я не могу добавить EventSetter в стиль для соответствующего ListViewItem.

Я хочу избежать необходимостидобавьте свойство зависимости с помощью некоторого ICommand для передачи всего этого через присоединенные свойства.

XAML-код (разбито):

<Style x:Key="{x:Type local:AutoCompleteTextBox}" TargetType="{x:Type local:AutoCompleteTextBox}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:AutoCompleteTextBox}">
                <!-- ... -->
                <Popup x:Name="PART_Popup" PlacementTarget="{Binding ...}" IsOpen="{Binding ...}">
                    <ListView ItemTemplate="{Binding ...}" ItemsSource="{Binding ...}">
                        <ListView.ItemContainerStyle>
                            <Style TargetType="{x:Type ListViewItem}">
                                <!-- 'ResourceDictionary' root element requires a x:Class attribute to support event handlers in the XAML file. Either remove the event handler for the MouseDoubleClick event, or add a x:Class attribute to the root element. -->
                                <EventSetter Event="MouseDoubleClick" Handler="ListViewItem_MouseDoubleClick"/>
                            </Style>
                        </ListView.ItemContainerStyle>
                    </ListView>
                </Popup>
                <!-- ... -->
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
...