У меня есть RepeatButton внутри шаблона ButtonSpinner внутри всплывающего окна.Когда я нажимаю на нее, я хочу, чтобы всплывающее окно оставалось открытым, но оно закрывается.Причина, по которой я использую этот шаблон, заключается именно в том, чтобы решить эту проблему.
Снимок экрана:
Обработчик события OnMouseLeftButtonUp
помечает событие MouseLeftButtonUp как обработанное здесь .
Я думал об использовании e.Handled = true
в обработчике событий, но я не уверен в этом, и порядок событий такой:
- PreviewMouseLeftButtonDown
- MouseLeftButtonDown
- PreviewMouseDown
- MouseDown
- Click
- PreviewMouseUp
- MouseUp
- PreviewMouseLeftButtonUp
- MouseLeftButtonUp
Внутри разметки Popup, у меня есть это:
<local:CustomIntegerUpDown Grid.Row="3" Value="1" Increment="1" ClipValueToMinMax="True" x:Name="MyCustomIntegerUpDown"/>
Ниже приведен шаблон, который я использую(только для целей тестирования: большая часть копируется из исходного кода Extended WPF Toolkit):
<xceed:ButtonSpinner.Template>
<ControlTemplate TargetType="{x:Type xceed:ButtonSpinner}">
<Border x:Name="Border"
SnapsToDevicePixels="True"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="firstContentColumn"
Width="*" />
<ColumnDefinition x:Name="secondContentColumn"
Width="Auto" />
</Grid.ColumnDefinitions>
<ContentPresenter x:Name="contentPresenter"
Focusable="False"
Margin="{TemplateBinding Padding}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
<Grid x:Name="gridContent"
Grid.Column="1"
Visibility="{TemplateBinding ShowButtonSpinner, Converter={StaticResource BooleanToVisibilityConverter}}"
Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<RepeatButton x:Name="PART_IncreaseButton"
Style="{DynamicResource {x:Static themes:ResourceKeys.SpinnerButtonStyleKey}}"
IsTabStop="{TemplateBinding IsTabStop}"
ContentTemplate="{StaticResource IncreaseGlyphNormalKey}" >
</RepeatButton>
<RepeatButton x:Name="PART_DecreaseButton"
Grid.Row="1"
Style="{DynamicResource {x:Static themes:ResourceKeys.SpinnerButtonStyleKey}}"
IsTabStop="{TemplateBinding IsTabStop}"
ContentTemplate="{StaticResource DecreaseGlyphNormalKey}" >
</RepeatButton>
</Grid>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background"
Value="{DynamicResource {x:Static themes:ResourceKeys.ControlDisabledBackgroundKey}}" />
</Trigger>
<Trigger SourceName="PART_IncreaseButton"
Property="IsEnabled"
Value="False">
<Setter TargetName="PART_IncreaseButton"
Property="ContentTemplate"
Value="{StaticResource IncreaseGlyphDisabledKey}" />
</Trigger>
<Trigger SourceName="PART_DecreaseButton"
Property="IsEnabled"
Value="False">
<Setter TargetName="PART_DecreaseButton"
Property="ContentTemplate"
Value="{StaticResource DecreaseGlyphDisabledKey}" />
</Trigger>
<Trigger Property="ButtonSpinnerLocation"
Value="Left">
<Setter TargetName="firstContentColumn"
Property="Width"
Value="Auto" />
<Setter TargetName="secondContentColumn"
Property="Width"
Value="*" />
<Setter TargetName="contentPresenter"
Property="Grid.Column"
Value="1" />
<Setter TargetName="gridContent"
Property="Grid.Column"
Value="0" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</xceed:ButtonSpinner.Template>
Я не нашел в Google порядок событий мыши, и я не знаю,решить проблему можно следующим образом.