Silverlight组合框选择已更改或重新选择事件
问题描述:
在Silverlight组合框上,当您打开下拉列表时,SelectionChanged事件不会触发,然后单击当前选定的项目。发生这种情况时,触发事件/方法的最佳方式是什么? (除了通常会触发SelectionChanged的任何事情,即他们或者单击未选定的或选定的项目;但不是当他们刚刚点击下拉菜单时)
我目前已经为列表中的项目设置了DataTemplates。我尝试附加到那些元素的MouseLeftButtonUp事件中,但是项目周围有空白,所以它不总是注册一个关闭组合框并单击项目的点击。Silverlight组合框选择已更改或重新选择事件
答
你有没有考虑过“DropDownClosed”事件?
答
我知道自从上次评论以来已经很长时间了,但是我会发布我的解决方案,以防有人遇到同样的问题。 只有这样,我成功地“重新选择”当前选择的项目是修改这样的ComboBoxItemTemplate:
<Style TargetType="ComboBoxItem">
....
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBoxItem">
<Grid ... MouseLeftButtonDown="Grid_MouseLeftButtonDown">
...
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
现在,在Grid_MouseLeftButtonDown事件我取消对当前项目;然后像往常一样处理鼠标点击,选择鼠标光标下的元素。
是的,我已经考虑过了。问题在于,当您打开下拉菜单并点击下拉菜单之外时,它也会触发。下拉菜单关闭,所以当然会触发,但用户实际上没有点击目前选择的项目,他们没有选择,所以我不想像他们那样行事。 – 2011-06-02 20:30:42
嗯,它似乎是一个混乱的东西,如果该项目目前选择然后我wouldnt再次选择它..所以这正是什么Id做的。你可以有一个布尔,selection_made = false,打开下拉列表,将其设置为yes,如果鼠标关闭,如果在dropdownclosed,它已被设置,然后使用当前选择的项目..但它很凌乱 – BugFinder 2011-06-02 20:37:14
嗯,是的有点凌乱,但我会明天尝试,如果没有更好的建议出现。 – 2011-06-02 22:29:34