【发布时间】:2014-09-02 13:08:15
【问题描述】:
我想创建一种行为,其中ComboBox 下拉菜单在失去焦点时关闭。
我的第一次尝试是:
public class ComboBoxLostFocusBehavior : Behavior<ComboBox> {
protected override void OnAttached() {
base.OnAttached();
AssociatedObject.LostFocus += (object sender, RoutedEventArgs e) => AssociatedObject.IsDropDownOpen = false;
}
}
但 LostFocus 事件仅指切换部分,而不是项目容器。
如何参考下拉列表?
我想要:当下拉列表失去焦点时 -> 下拉列表正在关闭
编辑:
我认为这个问题被误解了。 ComboBox 有 2 个主要部分,关闭时看到的部分(我们称之为 A)和下拉列表(我们称之为 B)。 LostFocus 仅指 A 部分。因此,在我提出的有问题的场景中,这是错误的,您打开下拉列表,将鼠标从 A 移动到 B,当刚刚离开 A 并到达 B 时,B 关闭(通过行为)。所以总而言之,LostFocus 是错误的方法,我正在寻找其他暗示下拉 (B) 失去焦点的东西。
【问题讨论】:
-
您的意思是当下拉菜单关闭时?或者当下拉菜单关闭时?或者当下拉菜单打开并失去焦点使其关闭时?
-
当下拉关闭时,我认为,它不能成为焦点。因此,当打开下拉菜单而不是失去焦点时。如何捕捉这个?
-
你应该使用 SelectionChanged 。你需要在 LostFocus 上做什么?
-
选择更改不好,因为选择是(某种)多选。我的项目模板是带有复选框的值,在选择时您可以在关闭前检查一些。