我的应用中出现一个奇怪的UI问题,当ScrollViewer
子失去焦点时,TextBox
会跳到顶部。我已经尝试在父BringIntoViewOnFocusChange="False"
中设置ScrollViewer
,但是不幸的是,这并不能解决问题。
这是一个显示我遇到的问题的快速视频:
如您所见,每次对顶部TextBox
进行聚焦时,一旦ScrollViewer
失去焦点,它就会跳回到顶部(即,当我在下面的ListView
中点击某个项目时。)如果单击这些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
UI(标题,底部的按钮等)交互。我还尝试订阅了第一个
LosingFocus
的TextBox
事件,并从那里设置e.Handled = true;
,但是那也不起作用。您是否知道为什么会这样?而且,为什么
BringIntoViewOnFocusChange="False"
属性在这种情况下不起作用?谢谢!
最佳答案
我认为问题是TextValidatorControl
导致TextBox
重新获得焦点,因为当控件不存在时这似乎不会发生。
如果您实际输入有效的名称,请验证会发生什么。如果行为停止了,建议您调查或发布TextValidatorControl
的源代码,因为它看起来像是问题的根源。
关于c# - 当TextBox子级失去焦点时,ScrollViewer跳到顶部,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49234312/