ich eine „Konsolenemulation“ habe, wie es hier gezeigt wird: https://stackoverflow.com/a/14957478/6518526Select/Kopieren von Text über mehrere Elemente in einem Item
Es gibt keine Interaktivität in meiner Konsole ist, so ist es wirklich nur ein Puffer, der sein wird angezeigt.
So gibt es eine ScrollViewer
enthält eine ItemsControl
, die TextBlocks
enthält. Die ItemsControl
erhält ihre Daten über eine Datenbindung an eine beobachtbare Warteschlange, die Zeichenfolgen enthält.
Wie kann dieses Setup erweitert werden, so dass Text wie in einer Konsole ausgewählt/kopiert werden kann?
Ich habe bereits versucht, eine TextBox
anstelle der TextBlock
zu verwenden, aber das gibt mir nur die Möglichkeit, innerhalb jedes Elements auszuwählen, aber nicht über mehrere der Elemente gleichzeitig.
Ich fand auch diese Lösung hier, die eine Möglichkeit implementiert, Steuerelemente in einem FlowDocument mit Datenbindungen zu füllen: https://msdn.microsoft.com/en-us/magazine/dd569761.aspx. Aber wie es scheint, wird mir dieser Ansatz auch keine Auswahlmöglichkeit über mehrere Punkte geben.
So, ich bin wenig verloren darüber, welche Control in welcher Weise verwendet werden kann, um dies zu erreichen.
Müssen Sie einen Teil eines Gegenstands auswählen, den nächsten und den Teil danach? Oder kannst du mit der diskreten Auswahl von Gegenständen leben, wobei jeder Gegenstand ganz oder gar nicht ausgewählt ist? Wenn Sie erstere verwenden, benötigen Sie eine mehrzeilige Nur-Lese-TextBox (mit Code in Ihrem Ansichtsmodell, um die Auswahl von Zeilen zu verbinden und das Ergebnis als Eigenschaft verfügbar zu machen). Wenn Letzteres, schlage ich eine ListBox vor. In der Tat ist die Join/Multiline-Textbox Sache bei weitem die einfachste Lösung: Sobald Sie die gewünschten Zeilen verbinden, ist der ganze Rest frei. –
wünschenswert ist in der Lage sein, beliebige Auswahlen zu machen, so scheint es die Join/Multiline-Textbox-Sache ist der Weg zu gehen. Können Sie näher erläutern, wie Sie das Teil gemeint haben, in dem Sie die Auswahl von Linien/Expose als Eigenschaft getroffen haben? – ptair
Ich meinte nur, wenn Sie sagen, öffentliche 'ObservableCollection Lines {...}', könnten Sie auch 'public String Text {bekommen {return String.Join (" \ n ", Lines); }} 'mit der entsprechenden Erhöhung von' PropertyChanged' wenn 'Lines' sich ändert. Dann im XAML ' ' mit entsprechenden anderen Attributen in der Textbox für Multilinearität, etc. etc. –