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

C# 当TextBox子项失去焦点时,ScrollViewer跳到顶部,c#,xaml,uwp,windows-runtime,windows-10-universal,C#,Xaml,Uwp,Windows Runtime,Windows 10 Universal,我的应用程序中出现了一个奇怪的用户界面问题,ScrollViewer在TextBox子对象失去焦点时会立即跳到顶部。我已经尝试在父级ScrollViewer中设置BringIntoViewOnFocusChange=“False”,但不幸的是,这并不能解决问题 下面是一个快速视频,显示了我遇到的问题: 如您所见,每当顶部文本框聚焦时,ScrollViewer一旦失去焦点就会跳回顶部(即,每当我在下面的列表视图中点击一个项目时。如果我点击其中一个组合框控件,也会发生这种情况:滚动查看器仍然会立即

我的应用程序中出现了一个奇怪的用户界面问题,
ScrollViewer
TextBox
子对象失去焦点时会立即跳到顶部。我已经尝试在父级
ScrollViewer
中设置
BringIntoViewOnFocusChange=“False”
,但不幸的是,这并不能解决问题

下面是一个快速视频,显示了我遇到的问题:

如您所见,每当顶部
文本框
聚焦时,
ScrollViewer
一旦失去焦点就会跳回顶部(即,每当我在下面的
列表视图中点击一个项目时。如果我点击其中一个
组合框
控件,也会发生这种情况:
滚动查看器
仍然会立即跳回

这是您看到的
弹出窗口
内容的一般结构:

<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
交互的代码,它与
弹出窗口
UI的其余部分(标题、底部按钮等)位于完全不同的
UserControl

我还尝试订阅了第一个
文本框
LosingFocus
事件,并从那里设置
e.Handled=true;
,但这也不起作用

你知道为什么会发生这种情况吗?还有,为什么
属性在这种情况下不起作用


谢谢!

我认为问题在于
TextValidatorControl
导致
TextBox
重新聚焦,因为当控件不在时,这似乎不会发生


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

您好,谢谢您的回答。我会立即测试,但我不确定我是否遵循了,您怎么说
TextValidatorControl
正在导致
TextBox
重新聚焦(据我所知,视觉状态仍然是“未聚焦”状态)?此外,即使是这样,为什么
ScrollViewer
会跳到顶部,而不管哪个控件获得或失去焦点,即使在设置了
BringIntoViewOnFocusChange
属性之后也是如此?我不确定,我猜验证器不知为什么会出现,因为我看到了验证错误。因为我没有看到它的原因代码,我不能肯定地说:-)。但在我这方面,当验证器不存在时,它不会发生,所以这可能是原因。如果你也可以发布验证器的代码,也许吧?
TextValidatorControl
只是一个带有图标的
TextBlock
,它绑定到上面
TextBox
属性,并随着文本的变化更新其UI。不管怎么说,我已经试着完全消除了这个问题。我还试着用一个
StackPanel
替换
RelativePanel
(只是尝试一下),同样的问题。我真的不明白哦,这太奇怪了…我必须再次尝试复制它谢谢!如果可以的话,我还将尝试创建一个复制,我真的希望这只是我的XAML代码中的一个小故障,框架没有什么问题。你能告诉我你使用了哪个控件作为ScrollViewer的父控件吗?@cocaiedew这是一个自定义控件,可以显示标题和底部显示的按钮,但我尝试将问题中描述的usercontrol直接放在
弹出窗口
网格
树中,问题仍然存在,因此我可以确认问题不是由我使用的父控件引起的。我还尝试使用s简单明了的
TextBox
,并用“取消”按钮和文本验证器删除它,同样的问题。
ScrollViewer
会在
TextBox
以任何方式失去焦点时立即跳转。@Sergio0694,你解决了这个问题吗?嗨@CarloMendoza-不幸的是,我没有。我在这一点上几乎放弃了,I c把这个问题归结到一些奇怪的框架行为上,我真的无法以任何方式对抗。至少这不是一个阻止秀的错误。