RadComboBox IsDropDownOpen 在连续按住选项卡时不更新。幻影下拉菜单
RadComboBox IsDropDownOpen not updating when holding tab continuous. Phantom Drop Downs
我可以使用另一双眼睛。场景如下图所示。 属性 设置为 OpenDropDownOnFocus="True"
的视图上的多个 RadComboBox,这样当它们接收到焦点时,下拉列表会显示给用户。
如果用户提供 KeyDown 和 KeyUp 用于 Tab 键,这将按预期工作。但是,如果您按住选项卡按钮,那么很多时候下拉菜单(这是嵌套在 ControlTemplate 中的 PopUp
控件)似乎不会收到 属性 的通知改变。这会导致一堆堆叠的下拉菜单保持打开状态,直到用户在屏幕的其他地方进行交互。有关视觉示例,请参见下图;
你在上面看到的 True
和 False
文本只是我浮动在控件上的 TextBlocks 绑定来报告 IsDropDownOpen
属性 的状态。注意他们中的一些人仍然报告 True
最初我试图通过使用 LostFocus
事件将 IsDropDownOpen
属性 翻转回 False 来给它一个友好的更新提醒。哪种作品。问题是当它打开时,焦点转移到嵌套的 PopUp。所以用户不能用鼠标选择他们的选择,但他们可以用箭头导航到它。这显然不是一个好的解决方法。
我尝试从模板级别绑定到它并附加 PopUp 的 LostFocus
,但我仍然不满意。
同样,只有当用户连续按住 Tab 按钮时才会出现此行为,到目前为止,telerik 论坛一直毫无用处。希望一双新鲜的眼睛可以将骨头扔向 KeyUp/KeyDown 之外的另一条路线或其他东西。有什么想法吗?
编辑 PS :当然这是一个 telerik 错误,不,我现在不能及时更新他们的东西,是的,在这种情况下,程序集可能落后很多版本,只需要弄清楚这一个单独的错误。
因此,如果其他人遇到此问题。这就是我所做的,这似乎可以解决问题。我以为我已经尝试过了,但显然是第一次拼写错误哈哈。
在 x:Key="EditableComboBox"
和 x:Key="NonEditableComboBox"
的控件模板中,只需将 Unfocused
VisualState
替换为此;
<VisualState x:Name="Unfocused">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_Popup"
Storyboard.TargetProperty="IsOpen">
<DiscreteObjectKeyFrame KeyTime="0:0:0">
<DiscreteObjectKeyFrame.Value>
<sys:Boolean>False</sys:Boolean>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
PART_Popup
是组合的弹出窗口,所以我们让 VSM 给它一个提醒,让它远离 UnFocused。
我可以使用另一双眼睛。场景如下图所示。 属性 设置为 OpenDropDownOnFocus="True"
的视图上的多个 RadComboBox,这样当它们接收到焦点时,下拉列表会显示给用户。
如果用户提供 KeyDown 和 KeyUp 用于 Tab 键,这将按预期工作。但是,如果您按住选项卡按钮,那么很多时候下拉菜单(这是嵌套在 ControlTemplate 中的 PopUp
控件)似乎不会收到 属性 的通知改变。这会导致一堆堆叠的下拉菜单保持打开状态,直到用户在屏幕的其他地方进行交互。有关视觉示例,请参见下图;
你在上面看到的 True
和 False
文本只是我浮动在控件上的 TextBlocks 绑定来报告 IsDropDownOpen
属性 的状态。注意他们中的一些人仍然报告 True
最初我试图通过使用 LostFocus
事件将 IsDropDownOpen
属性 翻转回 False 来给它一个友好的更新提醒。哪种作品。问题是当它打开时,焦点转移到嵌套的 PopUp。所以用户不能用鼠标选择他们的选择,但他们可以用箭头导航到它。这显然不是一个好的解决方法。
我尝试从模板级别绑定到它并附加 PopUp 的 LostFocus
,但我仍然不满意。
同样,只有当用户连续按住 Tab 按钮时才会出现此行为,到目前为止,telerik 论坛一直毫无用处。希望一双新鲜的眼睛可以将骨头扔向 KeyUp/KeyDown 之外的另一条路线或其他东西。有什么想法吗?
编辑 PS :当然这是一个 telerik 错误,不,我现在不能及时更新他们的东西,是的,在这种情况下,程序集可能落后很多版本,只需要弄清楚这一个单独的错误。
因此,如果其他人遇到此问题。这就是我所做的,这似乎可以解决问题。我以为我已经尝试过了,但显然是第一次拼写错误哈哈。
在 x:Key="EditableComboBox"
和 x:Key="NonEditableComboBox"
的控件模板中,只需将 Unfocused
VisualState
替换为此;
<VisualState x:Name="Unfocused">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_Popup"
Storyboard.TargetProperty="IsOpen">
<DiscreteObjectKeyFrame KeyTime="0:0:0">
<DiscreteObjectKeyFrame.Value>
<sys:Boolean>False</sys:Boolean>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
PART_Popup
是组合的弹出窗口,所以我们让 VSM 给它一个提醒,让它远离 UnFocused。