Общие лямбды не поддерживаются в C ++ 11. Это означает, что вы не можете иметь параметр с типом auto
.
Просто обновите до C ++ 14:
QMAKE_CXXFLAGS += -std=c++14
Для этого потребуется как минимум GCC 5.
Общие лямбды немного сложнее поддерживать, чем простые лямбды, потому что они требуют реализации шаблона как лямбда-закрытия
Если вы хотите остаться с C ++ 11, вам нужно будет напрямую указать тип параметра вашей функции:
auto val = std::find_if(
its.constBegin(),
its.constEnd(),
[](Item const& it) { // let Item be the
// type of (*its.constBegin())
}
);
Если Вы хотите Изображения на самом деле в тексте (как эмотикон), то Вы оказываетесь перед необходимостью делать некоторую работу. Это походит на один из нескольких раз, я на самом деле хотел бы Пользовательский элемент управления, точка которого будет той, которая сканирует текст, ища значения эмотикона и создавая Шаблон Данных на лету.
Помните, что что-либо, что можно сделать в XAML, который можно сделать в коде, таким образом, код я думаю, следовал бы за этим общим представлением:
Я думаю, что что-то вроде этого на самом деле, что Вы ищете, но если бы Вы хотите просто Изображение, затем предложение ValueConverter работало бы.
Вы могли использовать преобразователь значения для преобразования текста в другой тип, который имеет список сегментов, которые состоят или из текста или из улыбающейся поверхности (в порядке, в котором они появляются).
Затем можно использовать шаблон данных, чтобы связать с тем новым типом и отобразить текст и улыбающиеся поверхности соответственно.
Используйте Элемент изображения вместо TextBlock и используйте Преобразователь для отображения текстового значения на изображение улыбки.
<ListBox ItemsSource="{Binding MessageCollection}">
<ListBox.ItemTemplate>
<DataTemplate>
<Image Source="{Binding Text, Converter={StaticResource MyImageConverter}}"/>
</DataTemplate>
</ListBox.ItemTemplate>
Содержимое TextBlock всегда представляет собой последовательность строк, поэтому вы должны использовать InlineUIContainer. Вы можете вставить этот контейнер в качестве одного из Inline в вашем TextBlock, где бы вы ни хотели, чтобы появилось изображение, чередуя его с текстовыми прогонами. Вы можете проанализировать сообщение и одновременно добавить найденные токены (текстовые или графические) в коллекцию Inlines TextBlock.