最初の文字の前に 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>
原因を以下に示しましたが、なぜそれが起こるのか考えられますか?