У меня есть список, привязка к коллекции моего пользовательского объекта MyNode
, и я хочу установить два события, Drop
и MouseRightButtonDown
.У списка есть пользовательский элемент управления и стиль.
Стиль моего ListBoxItem
выглядит следующим образом:
<UserControl.Resources>
<Style TargetType="{x:Type ListBoxItem}" x:Key="pinnedListBoxStyle">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" Value="#EEF6FC"/>
</Trigger>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background" TargetName="Bd" Value="#74B4E4"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<EventSetter Event="Drop" Handler="ListBoxItem_Drop"/>
<EventSetter Event="MouseRightButtonDown" Handler="ListBoxItem_MouseRightButtonDown"/>
</Style>
</UserControl.Resources>
И я использую список с пользовательским элементом управления, например:
<ListBox SelectionMode="Single" Focusable="True" IsSynchronizedWithCurrentItem="True" AllowDrop="True"
ItemContainerStyle="{StaticResource pinnedListBoxStyle}">
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type local:MyNode}">
<local:MyItemTemplate/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Проблема:
Один из моих двух обработчиков событий, а именно ListBoxItem_MouseRightButtonDown
, никогда не срабатывает, когда я щелкаю правой кнопкой мыши по любому элементу.Другой обработчик ListBoxItem_Drop
всегда запускается как задумано.
Не могли бы вы предложить какие-нибудь идеи?