2017-01-16 4 views
1

Ich habe eine WPF Desktop-App.Ist es möglich, eine ObservableCollection an eine Richtextbox zu binden

Ich verwende das RTF-Steuerelement.

Ich möchte dieses Steuerelement an eine observablecollection binden.

Dieses Modell wird (zum Beispiel) hat diese Eigenschaften:

string name 
image Logo 
Brush MyColor 

So ist meine Absicht, den Namen anzuzeigen, Bild- und Hintergrundfarbe für jeden Datensatz.

Kann es getan werden?

Derzeit habe ich nur Code dahinter tut dies alles, aber ich bin einfach nur mit den Blöcken/paragrapgh ~

rtb.Document.Blocks.Add(para); 

etc

Ansicht:

<RichTextBox ScrollViewer.VerticalScrollBarVisibility="Auto" x:Name="rtb" HorizontalAlignment="Left" Height="100" Margin="88,117,0,0" VerticalAlignment="Top" Width="341"> 
     <FlowDocument> 
      <Paragraph> 

      </Paragraph> 
     </FlowDocument> 
    </RichTextBox> 
+0

Gibt es einen Grund, dass Sie eine RichTextBox anstelle eines regulären ItemsControl mit einer benutzerdefinierten Vorlage für Ihre Artikel verwenden möchten? – RogerN

+0

Hallo, ich habe ursprünglich eine Listbox benutzt und eine Datatemplate benutzt. Es funktionierte alles gut, aber das Scrollen war ein bisschen "nervös" Ich hatte gehofft, ein glatteres Aussehen mit dem rtb zu verwenden. –

+1

Das Listenfeld ist nervös, weil die Bildlaufleiste indizierte Positionen in Ihre Sammlung steuert. Wenn Sie stattdessen ein ItemsControl verwenden, das von einem ScrollViewer umschlossen ist, können Sie das gewünschte weiche Scrollen erreichen. – RogerN

Antwort

2

Kurze Antwort:

Die RichTextBox ist kein ItemsControl, das die Bindung an eineunterstützt.

Sie könnten möglicherweise ein Verhalten erstellen, die Sie zu einem Dokument binden können wie hier vorgeschlagen:

Richtextbox wpf binding

Aber wenn Sie etwas von einem ObservableCollection in einem RichTextBox angezeigt werden soll ich denke, die einfachste Lösung wäre, Durchlaufen der Auflistung und Hinzufügen von Blöcken zur RichTextBox programmgesteuert. Wie bereits erwähnt, unterstützt es nicht standardmäßig die Datenbindung.

+0

Danke. Es ist das, was ich dachte, ich werde diese Frage für den Rest des Tages offen lassen, bevor ich akzeptiere, nur für den Fall, dass es eine Arbeitsumgehung von jemandem gibt. ta –

+0

Könnte wahrscheinlich etwas mit einem 'IValueConverter' auch riggen, aber ich bezweifle, dass es sehr nützlich wäre. –

Verwandte Themen