RadComboBox IsDropDownOpen在保持制表符连续时不更新。 Phantom Drop Downs

时间:2016-01-15 19:31:24

标签: c# xaml silverlight telerik silverlight-5.0

我可以用另一双眼睛。场景如下所示。属性设置为OpenDropDownOnFocus="True"的视图上有多个RadComboBox,以便当它们获得焦点时,Drop Down会显示给用户。

如果用户提供用于标签的KeyDown和KeyUp,这将按预期工作。但是,如果您按住标签按钮,那么Drop Downs(嵌套在ControlTemplate中的PopUp控件)的大部分时间似乎都不会收到属性更改通知。这导致一堆堆叠的Drop Downs保持打开状态,直到用户在屏幕中的其他位置进行交互。有关可视化示例,请参见下图;

enter image description here

您在其上看到的TrueFalse文字只是TextBlocks,我在控件上浮动,以报告IsDropDownOpen属性的状态。请注意,他们仍然会报告True

最初,我尝试通过使用LostFocus事件将IsDropDownOpen属性翻转回False来提供更新的友好提醒。哪种作品。问题是当它打开时,Focus会转移到嵌套的PopUp。因此用户无法选择鼠标,但是他们可以将箭头导航到它。这显然不是一个好的解决方法。

我试图从模板级别绑定它并附加PopUp的LostFocus,但我仍然没有快乐。

同样,只有当用户持续按下Tab键时才会出现此行为,到目前为止,telerik论坛已经毫无用处。希望一双新鲜的眼睛可以向KeyUp / KeyDown之外的另一条路线投掷骨头。有什么想法吗?

编辑PS:当然这是一个telerik错误,我现在不能将他们的东西更新到最新版本,是的,在这个例子中,程序集可能是很多版本,只需要计算找出这个单独的错误。

1 个答案:

答案 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。