WPF TextBox.SelectAll () funktioniert nicht
-
06-07-2019 - |
Frage
habe ich die folgende Vorlage in meinem Projekt verwendet:
<DataTemplate
x:Key="textBoxDataTemplate">
<TextBox
Name="textBox"
ToolTip="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"
Tag="{Binding}"
PreviewKeyDown="cellValueTextBoxKeyDown">
<TextBox.Text>
<MultiBinding
Converter="{StaticResource intToStringMultiConverter}">
<Binding
Path="CellValue"
Mode="TwoWay">
<Binding.ValidationRules>
<y:MatrixCellValueRule
MaxValue="200" />
</Binding.ValidationRules>
</Binding>
<Binding
RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type y:MatrixGrid}}"
Path="Tag"
Mode="OneWay" />
</MultiBinding>
</TextBox.Text>
</TextBox>
</DataTemplate>
habe ich diese Vorlage eine editierbare Matrix für den Benutzer zu erstellen. Der Benutzer kann von Zelle zu Zelle in der Matrix navigieren, und ich mochte die Daten in dem ausgewählten Textfeld markieren, aber es funktioniert nicht. Ich rief TextBox.Focus () und TextBox.SelectAll (), um die Wirkung aber nichts zu erreichen. Der Focus () funktioniert, aber der Text wird nie hervorgehoben.
Jede Hilfe ist willkommen und geschätzt.
Lösung
Okay, wenn jemand interessiert ist, war die Lösung für dieses Problem von mir die Anweisung e.Handled = true;
in der Event-Handler-Methode umfasst, in denen die textBox.SelectAll()
und textBox.Focus()
genannt werden.
Das Problem war, dass ich einen Event-Handler an der PreviewKeyDown
Veranstaltung Textbox, die ein Tunnel-Ereignis behandelt und wahrscheinlich auch die SelectAll()
und Focus()
Anrufe ohne den Aufruf der e.Handled = true;
Anweisung ignoriert.
Hoffe, es wird jemand helfen.
Andere Tipps
Ohne den Rest des Codes ist es schwierig zu sagen, ob dies für Sie arbeiten, aber ich zusammen eine kleine Probe mit Ihrem Datatemplate (minus die Teile, die auf Code verweisen, die nicht geschrieben wurde).
Ich konnte den ganzen Text in den Textfeldern auswählen, indem Sie einen GotFocus-Ereignishandler zu dem Text in der Datatemplate und fügte hinzu:
<TextBox
...
GotFocus="textBox_GotFocus"
...>
...
</TextBox>
Und das Code-behind:
private void textBox_GotFocus(object sender, RoutedEventArgs e)
{
TextBox textBox = sender as TextBox;
if (textBox != null)
{
textBox.SelectAll();
}
}
Lassen Sie mich wissen, wenn Sie versuchen, alle unter verschiedenen Umständen zu wählen (nicht, wenn das Feld den Fokus erhält).
Hier ist eine sehr gut sehr einfache Lösung (ich weiß nicht, ob es für die Vorlage funktioniert, aber probieren Sie es aus): http://social.msdn.microsoft.com/forums/en-US/wpf/thread/564b5731-af8a-49bf -b297-6d179615819f