Я создаю свое первое приложение WPF, которое представляет собой программу чата IRC. Поскольку я новичок в WPF, я действительно не знаю, как мне отображать сообщения, потому что они могут содержать жирные, курсивные слова или даже изображения, или сообщение о выходе имеет другой цвет, чем простое сообщение.
Я искал в сети, и я нашел несколько решений. Первый тип решений — использовать RichTextBox с FlowDocument или просто простой FlowDocument и каким-то образом взломать их систему привязки, чтобы отобразить значение свойства. Что касается «взлома», я имею в виду, что эти элементы управления не имеют свойств привязки, потому что они не являются DependencyObjects. (Я не уверен, что это правильное выражение).
В простом TextBlock я не могу отображать сообщения, потому что он отображает значение строки. После большого количества сообщений в простой строке и добавления к ней нового требуется много копий памяти, поскольку строка не может быть изменена. И, кроме того, если я использую TextBlock, могу ли я выбрать его содержимое с помощью мыши, чтобы скопировать из него? Если я использую текстовое поле только для чтения, могу ли я использовать стиль, например, только для одного слова?
Итак, я собираюсь использовать ListView или что-то, что может отображать содержимое списка (или любой коллекции), а затем изменять его шаблон для правильного отображения каждого сообщения. (И каким-то образом отключите выбор ListView) Но я не знаю, какой элемент управления я должен использовать для сообщений, чтобы отображать их стильно и делать их доступными для выбора.
Было бы здорово использовать список для хранения сообщений, потому что после ~ 1000 сообщений я хотел бы удалить первые 100, чтобы сохранить их в файле журнала.
Поэтому я полностью запутался в том, как решить эту проблему. Я надеюсь, что у кого-то будет правильное решение для такого рода проблемы!