0
我有一個邏輯與我的文本框,它說,重點將選擇開始移動到最後一個字符,以便編輯人員可以繼續寫作。GotFocus上的DataTemplate中的TextBox無法分配SelectionStart?
這與此完美地工作:
private void TextBox_GotFocus(object sender, EventArgs e)
{
var textBox = sender as TextBox;
if (textBox == null) return;
textBox.SelectionStart = textBox.Text.Length;
}
和
<Style TargetType="{x:Type TextBox}">
<EventSetter Event="GotFocus" Handler="TextBox_GotFocus"/>
</Style>
和
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Name="SomeTextBox" Text="{Binding Path=Pressure, UpdateSourceTrigger=PropertyChanged}" Padding="2,0,0,0" />
<DataTemplate.Triggers>
<Trigger SourceName="SomeTextBox" Property="IsVisible" Value="True">
<Setter TargetName="SomeTextBox" Property="FocusManager.FocusedElement" Value="{Binding ElementName=SomeTextBox}"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
,但是,當我提出這:
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ContentControl Content="{Binding Path=Pressure, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ContentTemplate="{StaticResource DataGridTextBoxEdit}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
和可重複使用的模板:
<DataTemplate x:Key="DataGridTextBoxEdit">
<TextBox Name="TextBox" Text="{Binding Content, RelativeSource={RelativeSource AncestorType=ContentControl}}" Padding="2,0,0,0" />
<DataTemplate.Triggers>
<Trigger SourceName="TextBox" Property="IsVisible" Value="True">
<Setter TargetName="TextBox" Property="FocusManager.FocusedElement" Value="{Binding ElementName=TextBox}"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
它只是停止工作。 GotFocus事件觸發了,但是我根本不能分配任何東西給SelectionStart,它只是不保存它。試圖甚至硬編碼:
private void TextBox_GotFocus(object sender, EventArgs e)
{
var textBox = sender as TextBox;
if (textBox == null) return;
textBox.SelectionStart = 5;
}
但沒有奏效。值得注意的是,文本是空的,在這一點上只有DataContext被填充,然而由於SelectionStart沒有使用任何東西(保存),所以對我來說並不好。
我在做什麼錯?
親切的問候, 弗拉丹
這是完美的!謝謝! –