Изображения на дисплее в TextBlock (WPF)

Общие лямбды не поддерживаются в 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())
    }
);
13
задан lacop 7 April 2009 в 19:26
поделиться

4 ответа

Если Вы хотите Изображения на самом деле в тексте (как эмотикон), то Вы оказываетесь перед необходимостью делать некоторую работу. Это походит на один из нескольких раз, я на самом деле хотел бы Пользовательский элемент управления, точка которого будет той, которая сканирует текст, ища значения эмотикона и создавая Шаблон Данных на лету.

Помните, что что-либо, что можно сделать в XAML, который можно сделать в коде, таким образом, код я думаю, следовал бы за этим общим представлением:

  1. Текст сканирования для значений эмотикона и создает список значений для элементов данных.
  2. Создайте DockPanel.
  3. Элемент Foreach в Списке, добавляют или TextBlock или Изображение (на основе значения).
  4. Установите это. Содержание к DockPanel.

Я думаю, что что-то вроде этого на самом деле, что Вы ищете, но если бы Вы хотите просто Изображение, затем предложение ValueConverter работало бы.

1
ответ дан 1 December 2019 в 17:42
поделиться

Вы могли использовать преобразователь значения для преобразования текста в другой тип, который имеет список сегментов, которые состоят или из текста или из улыбающейся поверхности (в порядке, в котором они появляются).

Затем можно использовать шаблон данных, чтобы связать с тем новым типом и отобразить текст и улыбающиеся поверхности соответственно.

1
ответ дан 1 December 2019 в 17:42
поделиться

Используйте Элемент изображения вместо TextBlock и используйте Преобразователь для отображения текстового значения на изображение улыбки.

<ListBox ItemsSource="{Binding MessageCollection}">
<ListBox.ItemTemplate>
    <DataTemplate>
        <Image Source="{Binding Text, Converter={StaticResource MyImageConverter}}"/>
    </DataTemplate>
</ListBox.ItemTemplate>

-1
ответ дан 1 December 2019 в 17:42
поделиться

Содержимое TextBlock всегда представляет собой последовательность строк, поэтому вы должны использовать InlineUIContainer. Вы можете вставить этот контейнер в качестве одного из Inline в вашем TextBlock, где бы вы ни хотели, чтобы появилось изображение, чередуя его с текстовыми прогонами. Вы можете проанализировать сообщение и одновременно добавить найденные токены (текстовые или графические) в коллекцию Inlines TextBlock.

3
ответ дан 1 December 2019 в 17:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: