WPF: DataGrid Wie kann ich mehrzeiligen Text eingeben?

8

Jungs Ich möchte mehrzeiligen Text in eine DataGridTextColumn eingeben, ich kann "enter" verwenden, um ein mehrzeiliges Zeichen einzugeben. Aber ich möchte "shift + enter" wie Visual Studio Resource Manager verwenden, hier ist mein Code mit "Enter" -Taste.

%Vor%

    
yafeya 11.02.2011, 11:42
quelle

2 Antworten

13

Sie können dies beispielsweise tun, indem Sie das KeyDown-Ereignis in der TextBox mithilfe eines EventSetters in Ihrem Style behandeln. Ich habe Ihr Beispiel genommen, den AcceptsReturn-Setter im Stil entfernt und einen KeyDown-Handler zum EditingElementStyle hinzugefügt, der einen neuen Zeilenumbruch zum Cursor hinzufügt und den CaretIndex nach rechts verschiebt.

Hier ist der XAML:

%Vor%

Ich habe das Beispiel in der Window-Klasse aus einer neuen Application-Projektvorlage geschrieben, also hier die C # für das gesamte Fenster mit dem Ereignisbehandlungscode. Beachten Sie, dass ich Handled auf "true" gesetzt habe, um zu verhindern, dass das Ereignis irgendwo aufblubbert, da ich in diesem Fall nicht die Return-Taste als Commit für die Bearbeitungszeile behandeln möchte. Ich denke, das ist tatsächlich einer der Nachteile des Ansatzes. Das Bubbling / Tunneln eines Ereignisses zu stoppen ist etwas, das bei komplexen Interaktionen mit Benutzereingaben in Ihrer Anwendung leicht zu einer logischen Bombe werden kann. Aber es ist nicht so schlimm, wenn Sie nur einen speziellen Fall haben. So wie mit allem, verwenden Sie vorsichtig, wie der Teil Ihrer Benutzeroberfläche wächst.

%Vor%

Eine andere Sache, die Sie beachten sollten, ist, dass Sie vielleicht möchten, dass das Verhalten anders ist, wenn die Einfügetaste gedrückt wurde und Sie sich im Übersteuerungseingabemodus befinden. Vielleicht sollte in diesem Fall das nächste Zeichen durch die neue Zeile ersetzt werden. Der Ressourceneditor in Visual Studio 2010 scheint jedoch nicht auf den Einfügeschlüssel zu reagieren (der Text wird auch nicht als Mehrfachzeile angezeigt). Aber ich denke, in diesem Beispiel könnten Sie es so erweitern, dass es gut mit dem Insert-Key funktioniert. Hoffe, das hilft - viel Glück!

    
timmyl 13.02.2011, 00:49
quelle
6

Setzen Sie TextWrapping auf Wrap und AcceptsReturn = True ...

%Vor%     
blins 25.08.2011 23:46
quelle

Tags und Links