我不能使用在第一个字符之前设置 CaretIndex 的代码。
这是我的 XAML 代码:
<Border CornerRadius="5">
<ScrollViewer x:Name="scDetailedText" Grid.Column="0" BorderBrush="Transparent" BorderThickness="0">
<TextBox x:Name="ucDetailedText" Text="{Binding DetailsText}" Style="{StaticResource SearchDetailsTextStyle}" BorderBrush="Transparent" BorderThickness="0"/>
</ScrollViewer>
</Border>
这是我的后端代码:
void ucDetailedText_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (e.NewValue.Equals(true))
{
ucDetailedText.Focus();
ucDetailedText.Select(0, 0);
}
}
我已经缩小了范围,似乎这种风格阻止了代码。
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<TextBox x:Name="PART_EditableTextBox" MinWidth="50" Width="{Binding TextWidth}" Padding="3" BorderBrush="Transparent"
VerticalAlignment="Center" Background="Transparent"
**This line causes the problem** ~> Text="{Binding Text, RelativeSource={RelativeSource Mode=TemplatedParent}, UpdateSourceTrigger=PropertyChanged}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
我在下面指出了原因,任何想法为什么会发生?