我有一个组合框,其中包含条目和操作列表作为文本和按钮:
[ Item #1 [Preview] v ]
| Item #2 [Preview] |
| Item #3 [Preview] |
| Item #4 [Preview] |
问题是用户只能点击下拉列表中的按钮,但不能点击所选项目上的按钮。基本上任何ComboCox点击都会导致下拉列表打开。
有没有办法将下拉限制为仅限V按钮?或者以其他方式使所选项目中的按钮可以点击?
这是我的XAML
<ComboBox ItemsSource="{Binding LayoutsList}" >
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<Button
Command="{Binding PreviewCommand}"
CommandParameter="{Binding}"
>Preview</Button>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
答案 0 :(得分:1)
我认为只有覆盖整个ComboBox.Template
才有可能。下拉列表出现在MouseDown上,它似乎取消了项目中的任何后续事件处理程序,例如Button.Click
事件,所以我认为除了覆盖模板之外还有其他办法。
作为替代方案,您可以尝试使用PreviewMouseLeftButtonDown
确定鼠标是否在[预览]按钮上,如果是,请设置e.Handled = true
并显示SelectedItem
的预览。我不知道一个简单的方法,但不确定调查这条路线是否值得。