RadComboBox IsDropDownOpen 在连续按住选项卡时不更新。幻影下拉菜单

RadComboBox IsDropDownOpen not updating when holding tab continuous. Phantom Drop Downs

我可以使用另一双眼睛。场景如下图所示。 属性 设置为 OpenDropDownOnFocus="True" 的视图上的多个 RadComboBox,这样当它们接收到焦点时,下拉列表会显示给用户。

如果用户提供 KeyDown 和 KeyUp 用于 Tab 键,这将按预期工作。但是,如果您按住选项卡按钮,那么很多时候下拉菜单(这是嵌套在 ControlTemplate 中的 PopUp 控件)似乎不会收到 属性 的通知改变。这会导致一堆堆叠的下拉菜单保持打开状态,直到用户在屏幕的其他地方进行交互。有关视觉示例,请参见下图;

你在上面看到的 TrueFalse 文本只是我浮动在控件上的 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。