2017-01-16 4 views
1

У меня есть приложение для рабочего стола WPF.Можно ли связать ObservableCollection с richtextbox

Я использую управление RTF.

Я хочу привязать этот элемент управления к наблюдаемому коллективу.

Эта модель будет иметь (например) эти свойства:

string name 
image Logo 
Brush MyColor 

Таким образом, мое намерение состоит в том, чтобы отобразить имя, изображение и цвета фона для каждой записи.

Можно ли это сделать?

В настоящее время я просто код позади, что делает все это, но я просто добавление к блокам/paragrapgh ~

rtb.Document.Blocks.Add(para); 

т.д.

вид:

<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

Есть ли причина, по которой вы хотите использовать RichTextBox вместо обычного элемента ItemsControl с настраиваемым шаблоном для ваших товаров? – RogerN

+0

Привет, я изначально использовал поле списка и использовал таблицу данных. Все работало хорошо, но прокрутка была немного «нервной». Я надеялся использовать более гладкий вид и почувствовать себя с помощью rtb. –

+1

Перечень пересказок, потому что полоса прокрутки управляет индексированными позициями в вашей коллекции. Если вы используете элемент ItemsControl, обернутый ScrollViewer, вместо этого вы можете добиться гладкой прокрутки, которую вы хотите. – RogerN

ответ

2

Короткий ответ: №

RichTextBox не является элементом управления ItemsControl, который поддерживает привязку к IEnumerable.

Вы могли бы создать поведение, которое позволяет связать с документом, как предложено здесь:

Richtextbox wpf binding

Но если вы хотите, чтобы отобразить что-то из ObservableCollection в RichTextBox я думаю, самый простой подход был бы для итерации коллекции и добавления блоков в RichTextBox программно. Как уже упоминалось, он не поддерживает привязку данных к офсетной коробке.

+0

Спасибо. Это то, что я думал, что оставлю этот вопрос открытым до конца дня, прежде чем принимать его на случай, если у кого-то будет какая-то работа. ta –

+0

Возможно, что-то с помощью «IValueConverter» тоже нужно было что-то использовать, но я сомневаюсь, что это было бы очень полезно. –