2017-07-12 6 views
1

Ich habe etwas Inhalt im Textblock. Ich muss den Text aus den Beschriftungen ziehen und ablegen, um die Anweisungen zu füllen. Es ist so, als würde man die Leerzeichen einer Zeichenkette mit Drag & Drop füllen. (Für zB: Der Zieltext Block enthält "UWP ist __ Plattform-homogene Anwendungsarchitektur erstellt __ Microsoft __ erstmals eingeführt __ Windows 10" und in gridview habe ich individuelle Etiketten als "a", "von", " "," in ". Ich muss das Wort ziehen und in den leeren Bereich einfügen, um die folgende Aussage zu vervollständigen" UWP ist eine Plattform-homogene Anwendungsarchitektur von Microsoft erstellt und erstmals in Windows 10 eingeführt ") Ich bin versuchen, in UWP mit C# zu erreichen. bitte helfen Sie mir, dies zu tun. Click here to view the sampleDrag & Drop Label Text in den TextBlock in UWP

Antwort

1

Ich habe Ihre Anforderung basierend auf DragAndDropSampleManaged UWP offiziellen Codebeispiel erreicht. Für Ihre Anforderung möchten Sie Text wie "a", "by", "und", "in" in den bestehenden Satz über drag and drop einfügen. Sie sollten also den Bereich erreichen, in den Sie einfügen möchten. Sie könnten GetRangeFromPoint (RichEditBox) Methode verwenden, um den Bereich, wo Sie den Mauszeiger wie folgt schwebte:

private void TargetTextBox_DragOver(object sender, DragEventArgs e) 
{ 
    var point = e.GetPosition(TargetTextBox); 
    var range = TargetTextBox.Document.GetRangeFromPoint(point, Windows.UI.Text.PointOptions.ClientCoordinates); 
    TargetTextBox.Document.Selection.SetRange(range.StartPosition - 1, range.EndPosition);  
    TargetTextBox.Focus(FocusState.Keyboard); 
} 

enter image description here Der Text wird in bestimmten Bereich eingesetzt werden, wenn der Punkt freigegeben.

private async void TargetTextBox_Drop(object sender, Windows.UI.Xaml.DragEventArgs e) 
{ 
    VisualStateManager.GoToState(this, "Outside", true); 
    bool hasText = e.DataView.Contains(StandardDataFormats.Text); 
    // if the result of the drop is not too important (and a text copy should have no impact on source) 
    // we don't need to take the deferral and this will complete the operation faster 
    e.AcceptedOperation = hasText ? DataPackageOperation.Copy : DataPackageOperation.None; 
    if (hasText) 
    { 
     var text = await e.DataView.GetTextAsync();   
     TargetTextBox.Document.Selection.Text = text; 
    } 
} 

enter image description here

+0

Großen. Danke Nico Zhu. Ich muss auch ein Zeichen durch Ziehen des Inhalts ersetzen. Für ex: Ich muss ersetzen die "__" durch die Eingabe (gezogen) string.Kindly gehen durch das Beispiel Bild in meiner Frage.notwendig, um die Position der Zeichenfolge '__' zu finden und könnte durch die Eingabe in der gleichen Position ersetzt werden (Hinweis: Ich habe mehrere ersetzbare Zeichenfolgen ("__") im Zielinhalt.). Ist es möglich? – Sabi

+0

Ich habe meine Antwort bearbeiten, bitte überprüfen! –

+0

Ja, Sie könnten Ihren Auswahlbereich ändern, um bestimmte Zeichen wie "_" zu enthalten. –