这是此question的后续内容。在此问题中,OP要求是否有可能,如果用户单击ToggleButton,则只能打开ComboBox。如果用户单击其他位置,则什么也不会发生。
我的想法是注册到PreviewMouseUp
事件,遍历原始发送者的视觉树,如果有切换,则将事件参数的Handled
属性设置为true
找到了按钮。
我期望的是,如果单击切换按钮的某个位置,则会在视觉树中找到ToggleButton
实例,如果单击它的外部,则不会找到ToggleButton
实例。
我看到的是,在两种情况下都找到了ToggleButton
实例。在WPF Visualizer中,我只找到一个ToggleButton
。 OriginalSource
属性始终是DockPanel
的{{1}}。有人对此有解释吗?
XAML
ToggleButton
背后的代码
<ComboBox PreviewMouseUp="UIElement_OnPreviewMouseUp">
<ComboBoxItem IsSelected="True">Item 1</ComboBoxItem>
<ComboBoxItem>Item 2</ComboBoxItem>
<ComboBoxItem>Item 3</ComboBoxItem>
</ComboBox>