WPF TextBox 在 MouseOver 上显示插入符号
WPF TextBox show Caret on MouseOver
我正在寻找一种在 IsMouseOver="True"
时在 TextBox
中显示插入符的方法。 here 提到的使用 FocusManager.IsFocusScope="True"
的解决方案似乎不起作用。
有没有一种无需在 TextBox
内部单击即可显示插入符的方法?
MWE:
<Window x:Class="WpfApp11.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Window.Resources>
<Style BasedOn="{StaticResource {x:Type TextBox}}" TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="FocusManager.IsFocusScope" Value="True" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<TextBox Width="300" Height="22" Text="Hello World" />
</Grid>
</Window>
A TextBox
在单击后显示插入符。我希望插入符号在鼠标悬停时显示。
如果要设置焦点,则需要使用FocusedElement
(credits):
<Style BasedOn="{StaticResource {x:Type TextBox}}"
TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="IsMouseOver"
Value="True">
<Setter Property="FocusManager.FocusedElement"
Value="{Binding RelativeSource={RelativeSource Self}}" />
</Trigger>
</Style.Triggers>
</Style>
如果您希望插入符号最初位于末尾,请考虑像这样初始化所有文本框 (credits):
<TextBox CaretIndex="{x:Static system:Int32.MaxValue}" ... />
其中 system
定义如下:
<Window xmlns:system="clr-namespace:System;assembly=mscorlib" ... />
我正在寻找一种在 IsMouseOver="True"
时在 TextBox
中显示插入符的方法。 here 提到的使用 FocusManager.IsFocusScope="True"
的解决方案似乎不起作用。
有没有一种无需在 TextBox
内部单击即可显示插入符的方法?
MWE:
<Window x:Class="WpfApp11.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Window.Resources>
<Style BasedOn="{StaticResource {x:Type TextBox}}" TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="FocusManager.IsFocusScope" Value="True" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<TextBox Width="300" Height="22" Text="Hello World" />
</Grid>
</Window>
A TextBox
在单击后显示插入符。我希望插入符号在鼠标悬停时显示。
如果要设置焦点,则需要使用FocusedElement
(credits):
<Style BasedOn="{StaticResource {x:Type TextBox}}"
TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="IsMouseOver"
Value="True">
<Setter Property="FocusManager.FocusedElement"
Value="{Binding RelativeSource={RelativeSource Self}}" />
</Trigger>
</Style.Triggers>
</Style>
如果您希望插入符号最初位于末尾,请考虑像这样初始化所有文本框 (credits):
<TextBox CaretIndex="{x:Static system:Int32.MaxValue}" ... />
其中 system
定义如下:
<Window xmlns:system="clr-namespace:System;assembly=mscorlib" ... />