gpt4 book ai didi

c# - 光标在模板化文本框中不闪烁

转载 作者:太空狗 更新时间:2023-10-29 20:41:12 25 4
gpt4 key购买 nike

我的其中一个 View 中有以下 TextBox:

<TextBox Name="SearchTerm" Style="{StaticResource SearchTermTextBoxStyle}"
Text="{Binding TemplatesViewModel.SearchTerm, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}"
attachedProperties:Watermark.Watermark="Some watermark text"
KeyboardNavigation.TabIndex="5" />

如您所见,应用了以下样式:

<Style x:Key="SearchTermTextBoxStyle" TargetType="{x:Type TextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid>
<TextBox Text="{Binding Text, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Text="{Binding (attachedProperties:Watermark.Watermark), Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" x:Name="DefaultTextPrompt"
Foreground="#888888" FontStyle="Italic" HorizontalAlignment="Left"
VerticalAlignment="Center" IsHitTestVisible="False" Visibility="Hidden"
Margin="5,-1,0,0" />
</Grid>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Text" Value="" />
<Condition Property="IsKeyboardFocusWithin" Value="False" />
</MultiTrigger.Conditions>
<Setter Property="Visibility" TargetName="DefaultTextPrompt" Value="Visible" />
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

问题是当我在 SearchTerm 文本框上获得焦点时,光标根本不会出现。首先想到的是一个简单的结论:可能我只获得逻辑焦点,而不是键盘焦点。但事实并非如此。我可以在那个 TextBox 中自由输入一些文本,但我仍然没有得到光标。当我使用鼠标左键输入此文本框时,光标出现并按预期闪烁。
那么我的 TextBox 有什么问题吗?

最佳答案

问题出在您放置在 TextBoxControlTemplate 中的 TextBox 控件上。我想当您关注(父级)TextBox 时,它不会关注 ControlTemplateTextBox

当您使用左键单击时,它直接转到 ControlTemplateTextBox,因此您有闪烁的光标。

如果您注意到原始(默认)TextBoxControlTemplate,它使用 ScrollViewer 来承载内容,所以我建议你去改变

<TextBox Text="{Binding Text, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}, UpdateSourceTrigger=PropertyChanged}" />

<ScrollViewer x:Name="PART_ContentHost" Focusable="False" />

这将自动显示 TemplatedParent 中的 Text。还可以让您专注于(父级)TextBox

关于c# - 光标在模板化文本框中不闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41761854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com