UWP эквивалент SpannableString для Android с изображением внутри

#c# #uwp #windows-10

#c# #uwp #windows-10

Вопрос:

Есть ли способ реализовать изображение внутри текстового блока, а не за его пределами? В Android есть функция под названием SpaanableStringBuilder , которая позволяет пользователю создавать текст с различным внешним видом. Есть ли в UWP что-то подобное?

 MyTextBlock.Text = "Google"   ?   "icon";
  

введите описание изображения здесь

Комментарии:

1. Один из способов — использовать RichTextBlock и встроить InlineUIContainer.

2. UWP является сложным. Возможно, вы можете преобразовать изображение в шрифт.

Ответ №1:

Как сказал Рэймонд, в UWP RichTextBlock необходим для смешивания изображений и текста.

С помощью Xaml

 <RichTextBlock>
    <Paragraph>
        <Run Text="Something..."/>
        <InlineUIContainer>
            <Image Source="your_image_url" Width="20" Height="20"/>
        </InlineUIContainer>
        <Run Text="Something..."/>
    </Paragraph>
</RichTextBlock>
  

С кодом

 var richTextBlock = new RichTextBlock();
var para = new Paragraph();
para.Inlines.Add(new Run() { Text = "Something..." });
var imgContainer = new InlineUIContainer();
var img = new Image();
img.Source = new BitmapImage(new Uri("your_image_url"));
imgContainer.Child = img;
para.Inlines.Add(imgContainer);
para.Inlines.Add(new Run() { Text = "Something..." });
richTextBlock.Blocks.Add(para);
  

Или вы могли бы написать это таким образом, который более точно отражает XAML.

 var richTextBlock = new RichTextBlock()
{
    Blocks = {
        new Paragraph {
            Inlines = {
                new Run { Text = "Something" },
                new InlineUIContainer {
                    Child = new Image {
                        Source = new BitmapImage(new Uri("your_image_url"))
                    }
                },
                new Run { Text = "Something..."}
            }
        }
    }
};