我的应用中出现了一个奇怪的用户界面问题,一旦ScrollViewer
孩子失去焦点,TextBox
会跳到顶部。我已经尝试在父BringIntoViewOnFocusChange="False"
中设置ScrollViewer
,但不幸的是,这并没有解决问题。
这是一段快速视频,展示了我遇到的问题:
正如您所看到的,每当顶部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
进行交互的代码,UserControl
与Popup
用户界面的其余部分(标题,底部的按钮等。)。
我还试图订阅第一个LosingFocus
的{{1}}事件,并从那里设置TextBox
,但这也不起作用。
你知道为什么会这样吗?而且,为什么e.Handled = true;
属性在这种情况下不起作用?
谢谢!
答案 0 :(得分:0)
我认为问题是TextValidatorControl
导致TextBox
重新获得焦点,因为当控件不存在时,似乎不会发生这种情况。
请确认如果您确实输入了有效名称会发生什么。如果行为停止,我建议您调查或发布TextValidatorControl
的源代码,因为它看起来像是问题的根源。