我正在为程序编写自定义控件。除其他外,该控件的模板中有一个 ComboBox。像这样简单的东西可以重现:
<Style TargetType="{x:Type local:CustomControl1}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomControl1}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<ComboBox />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
如果我右键单击此控件,则会引发 PreviewMouseRightButtonUp 事件,但不会引发 MouseRightButtonUp 事件。我认为这是因为 ComboBox 控件在其自己的 PreviewMouseRightButtonUp 事件中将 e.Handled 设置为 true,从而防止引发其他事件。我之所以猜测是因为如果我将一个 Rectangle 换成 ComboBox,我会得到两个事件,并且如果在我的自定义控件中我在 Preview 事件中将 e.Handled 设置为 true,我只会得到 preview 事件。
我正在为其编写控件的程序期望在发生右键单击时引发这两个事件,我怀疑我能否让它们改变这一点。我是否必须以不吃预览事件的方式重新创建 ComboBox,还是有其他技巧?