我可以用另一双眼睛。场景如下所示。属性设置为OpenDropDownOnFocus="True"
的视图上有多个RadComboBox,以便当它们获得焦点时,Drop Down会显示给用户。
如果用户提供用于标签的KeyDown和KeyUp,这将按预期工作。但是,如果您按住标签按钮,那么Drop Downs(嵌套在ControlTemplate中的PopUp
控件)的大部分时间似乎都不会收到属性更改通知。这导致一堆堆叠的Drop Downs保持打开状态,直到用户在屏幕中的其他位置进行交互。有关可视化示例,请参见下图;
您在其上看到的True
和False
文字只是TextBlocks,我在控件上浮动,以报告IsDropDownOpen
属性的状态。请注意,他们仍然会报告True
最初,我尝试通过使用LostFocus
事件将IsDropDownOpen
属性翻转回False来提供更新的友好提醒。哪种作品。问题是当它打开时,Focus会转移到嵌套的PopUp。因此用户无法选择鼠标,但是他们可以将箭头导航到它。这显然不是一个好的解决方法。
我试图从模板级别绑定它并附加PopUp的LostFocus
,但我仍然没有快乐。
同样,只有当用户持续按下Tab键时才会出现此行为,到目前为止,telerik论坛已经毫无用处。希望一双新鲜的眼睛可以向KeyUp / KeyDown之外的另一条路线投掷骨头。有什么想法吗?
编辑PS:当然这是一个telerik错误,我现在不能将他们的东西更新到最新版本,是的,在这个例子中,程序集可能是很多版本,只需要计算找出这个单独的错误。
答案 0 :(得分:1)
所以,如果有其他人遇到这个。这就是我所做的那些似乎可以做到的伎俩。我以为自己曾经尝试过,但是第一次显然是捏造了一些拼写哈哈。
在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。