当TextBox子项失去焦点时,ScrollViewer跳转到顶部

时间:2018-03-12 11:38:17

标签: c# xaml uwp windows-runtime windows-10-universal

我的应用中出现了一个奇怪的用户界面问题,一旦ScrollViewer孩子失去焦点,TextBox会跳到顶部。我已经尝试在父BringIntoViewOnFocusChange="False"中设置ScrollViewer,但不幸的是,这并没有解决问题。

这是一段快速视频,展示了我遇到的问题:

gif

正如您所看到的,每当顶部TextBox聚焦时,ScrollViewer一旦失去焦点就会跳回到顶部(即每当我点击{ListView中的某个项目时1}}下面。如果我点击其中一个ComboBox控件,也会发生这种情况:ScrollViewer仍会立即跳回来。

这是您Popup所见内容的一般结构

<UserControl>
    <RelativePanel HorizontalAlignment="Stretch">

        <!--Item name-->
        <TextBlock Text="Name"/>
        <customControls:TextBoxActionButton/>
        <customControls:TextValidatorControl/>

        <!--Section selector-->
        <TextBlock Text="Section"/>
        <customControls:ComboBoxWithResetButton/>

        <!--Item GroupName-->
        <TextBlock Text="Group"/>
        <customControls:ComboBoxWithResetButton/>

        <!--Template based on-->
        <TextBlock Text="Based on"/>
        <customControls:ComboBoxWithResetButton/>

        <!--Icons list and description-->
        <TextBlock Text="Icon"/>
        <ListView ScrollViewer.VerticalScrollMode="Disabled"/>

        <!--Select color text-->
        <TextBlock Text="Select color"/>
        <ListView ScrollViewer.VerticalScrollMode="Disabled"/>
    </RelativePanel>
</UserControl>

我没有任何与父ScrollViewer进行交互的代码,UserControlPopup用户界面的其余部分(标题,底部的按钮等。)。

我还试图订阅第一个LosingFocus的{​​{1}}事件,并从那里设置TextBox,但这也不起作用。

你知道为什么会这样吗?而且,为什么e.Handled = true;属性在这种情况下不起作用?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为问题是TextValidatorControl导致TextBox重新获得焦点,因为当控件不存在时,似乎不会发生这种情况。

请确认如果您确实输入了有效名称会发生​​什么。如果行为停止,我建议您调查或发布TextValidatorControl的源代码,因为它看起来像是问题的根源。