Почему текстовое поле всегда фокусируется, когда я щелкаю пустую область страницы?

Как показано на рисунке, мое текстовое поле находится вверху прокрутки. Но когда я прокручиваю вниз и щелкаю пустую область, текстовое поле всегда фокусируется.

Это раздражает.

Как удалить автофокус с текстового поля?

    <ScrollViewer Grid.Row="1" Padding="5" Style="{StaticResource ScrollViewerAppleStyle}">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition MinHeight="100" MaxHeight="400"/>
                <RowDefinition Height="60"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="60"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="60"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="60"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="60"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="60"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="60"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>

            <TextBox Text="欢迎使用小冰科技最新研发的自然语言处理程序。"  x:Name="textInput" x:Uid="textBox_Input" TabIndex="-1" BorderBrush="Gray" BorderThickness="1" TextWrapping="Wrap" AcceptsReturn="True" Style="{StaticResource TransparentBackgroundTextBoxStyle}" ScrollViewer.VerticalScrollBarVisibility="Auto"/>

            Other controls.......

        </Grid>
    </ScrollViewer>

1 ответ

У меня была та же проблема, которую легко исправить, когда IsTabStop свойство ScrollViewer установлено в True,

<ScrollViewer IsTabStop="True">
    //your code with TextBox in here
</ScrollViewer>

Я также испытал эту немного раздражающую ошибку, которая, когда в сочетании с ScrollViewer приводит к очень нежелательному поведению.

Кажется, что когда вы теряете фокус ранее сфокусированного элемента управления, фокус должен быть назначен другому элементу управления. TextBox это первый элемент управления, "фокусируемый" на вашей странице, и, следовательно, ему будет уделено внимание, что приведет к ScrollViewerвынужден изменить свой вид на вертикальное смещение, где TextBox определяется в.

Самым простым вариантом было бы LostFocus событие и назначить фокус другому элементу управления, который не вызовет такой заметной проблемы.

Я полагаю, что причина такого поведения заключается в том, чтобы не испортить опыт пользователей, использующих только клавиатуру.

Другие вопросы по тегам