Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2016, 13:07   #1
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
Вопрос Как сделать контейнер для чата? C# WPF XAML MVVM

Делаю чат, мне нужен контейнер в котором будут отображаться сообщения. Это должно выглядеть как в классических чатах, т.е.: поле по типу TextBox-а многострочное, но ReadOnly чтобы можно было копировать. Сообщения будут в формате "date username > message". Но самое главное и сложное надо чтобы ник (username) был кликабельным! Т.е. он во первых должен отображаться ну примерно как ссылка, такой подчеркнутый. При клике по нему можно открыть приват. (это уже я сам дореализую понятное дело, мне бы только сделать его кликабельным) А при клике правой кнопкой по нему контекстную менюшку открыть. Подскажите как это реализовать? Только не предлагать ListBox, я уже видел такие примеры в сети! Это не то совсем, потому что это уже вообще не смотрится как чат и копировать нельзя...
NewLamer&Programer вне форума Ответить с цитированием
Старый 26.04.2016, 13:13   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Это не то совсем, потому что это уже вообще не смотрится как чат и копировать нельзя...
Что нельзя? ItemTemplate есть же.

ItemsControl есть если ListBox не нужен.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.04.2016, 13:25   #3
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Что нельзя? ItemTemplate есть же.

ItemsControl есть если ListBox не нужен.
Может быть и можно туда воткнуть в шаблон какой нибудь TextBox, но во первых это будет смотреться не очень красиво (я уже пробовал), во вторых остается выделение строк ListBox-а - это вообще ни в какие ворота, в третьих самое главное - придется же делать не один TextBox, а какие то 3 контрола подряд: один будет отображать время, второй ник, третий сообщение, таким образом нельзя будет скопировать все сразу и время и ник и сообщение и наконец нельзя будет копировать весь текст в чате одним выделением, все будет ограничено сообщением от одного пользователя. Нет это не то... А вот ItemsControl надо смотреть, я им че то ни разу не пользовался, даже хз что это такое...

Да и в ItemsControl в общем то та же фигня что и с ListBox-ом. Тут проблема не в контейнере, а в способе отображения. Я хочу чтобы с чата легко было копировать, все, включая время, ник, сообщения сразу нескольких пользователей. Т.е. фактически это должно быть обычное поле ввода, но с кликабельным ником.

Последний раз редактировалось Alex11223; 26.04.2016 в 14:51.
NewLamer&Programer вне форума Ответить с цитированием
Старый 26.04.2016, 13:41   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

С копированием нескольких сложнее. Может тут что-то есть https://www.google.com/search?q=wpf+...ple+text+boxes

Но вообще обычно так не делают чаты, а берут что-нибудь типа RichEdit или какой-нибудь другой продвинутый контрол для текста (AvalonEdit, ...) или HTML.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.04.2016, 13:47   #5
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
С копированием нескольких сложнее. Может тут что-то есть https://www.google.com/search?q=wpf+...ple+text+boxes

Но вообще обычно так не делают чаты, а берут что-нибудь типа RichEdit или какой-нибудь другой продвинутый контрол для текста (AvalonEdit, ...) или HTML.
Согласен, это как то коряво... А какие именно контролы можно использовать? Я бы вполне мог заюзать и сторонний контрол, главное чтоб бесплатный был, а то я тут уже видел всякие Essential Objects которые добавляют в программу выскакивающее окошко с предложением купить лицензию. :D Да и причем тут HTML если у меня WPF приложение? О_о
NewLamer&Programer вне форума Ответить с цитированием
Старый 26.04.2016, 13:59   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Выше ж написано какие можно.
Цитата:
Да и причем тут HTML если у меня WPF приложение? О_о
WebBrowser, Awesomium, CEF, ..., https://www.google.com/search?q=WPF+html, ...
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.04.2016, 14:06   #7
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Выше ж написано какие можно.
Ну я посмотрел этот AvalonEdit, так это же вроде контрол для отображения кода. Зачем он мне? Или он такое тоже умеет?
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
WebBrowser, Awesomium, CEF, ..., https://www.google.com/search?q=WPF+html, ...
Не совсем понял... Это типа контролы которые отображают HTML код? (работают как браузер) А смысл то в чем? Что такого можно реализовать на HTML чего нельзя реализовать на XAML? И потом честно говоря я очень хреновый HTML программист... Вот с XAML дружу как ни странно, а HTML и вообще всю веб-разработку люто ненавижу.
NewLamer&Programer вне форума Ответить с цитированием
Старый 26.04.2016, 14:29   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

примеры подобных штук нужно на стэке смотреть, например http://ru.stackoverflow.com/question...-в-чате-на-wpf
pu4koff вне форума Ответить с цитированием
Старый 26.04.2016, 14:30   #9
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
примеры подобных штук нужно на стэке смотреть, например http://ru.stackoverflow.com/question...-в-чате-на-wpf
Во первых это не то вообще. Во вторых я это уже видел.

Короче проблема кажется решилась. Оказывается все необходимое уже есть встроенное и никакие дополнительные телодвижения не нужны. Будет примерно так:
Код:
<FlowDocumentScrollViewer>
	<FlowDocument>
		<Paragraph>
			<Run Text="Time "/>
			<Run Text="Nick>"/>
			<Run Text="Message"/>
		</Paragraph>
	</FlowDocument>
</FlowDocumentScrollViewer>
Только соответственно на ник надо будет подвесить стиль со всем необходимым, ну и биндинги расставить. А больше ничего и не надо!

Последний раз редактировалось Alex11223; 26.04.2016 в 14:51.
NewLamer&Programer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WPF Mvvm Light работа с Таймерами - C# WPF Notan1310 WPF, UWP, WinRT, XAML 4 15.04.2016 05:07
WPF Mvvm CWD WPF, UWP, WinRT, XAML 0 22.07.2015 23:21
Комманды и ICommand в WPF MVVM andy301086 WPF, UWP, WinRT, XAML 0 09.07.2012 01:04
WPF контекстное меню для ListBox MVVM Нике WPF, UWP, WinRT, XAML 0 29.04.2012 15:26
WPF LisBox Selectionchanged to MVVM Нике WPF, UWP, WinRT, XAML 0 10.04.2012 22:31