在RichTextBox WPF中添加图像

本文关键字:添加 图像 WPF RichTextBox | 更新日期: 2023-09-27 18:05:31

我试图在基于ListBox项目的选择的RichTextBox内添加静态图像。我能够实现加载图像的功能,但图像不占用RichTextBox的整个大小。我查看了MSDN文档中我可以设置的任何属性,但找不到任何适合我需要的。

我已经发布了一个示例代码片段来添加一个图像到RichTextBox

<Window x:Class="ImageDepth.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <RichTextBox HorizontalAlignment="Center" Height="100" VerticalAlignment="Center" Width="100" BorderBrush="Gray">
        <FlowDocument>
            <BlockUIContainer>
                <Image Source="C:'Temp'Penguins.jpg"/>
            </BlockUIContainer>                
        </FlowDocument>
    </RichTextBox>
</Grid>

我在这里错过了什么,或者有一个更简单的方法来实现这一点?

编辑:我尝试将图像的高度和宽度设置为RichTextBox的高度和宽度,但它覆盖了RichTextBox的80%左右。此外,我必须删除图像的拉伸属性,因为它会稍微扭曲图像,即使设置该属性使图像覆盖大约90%的区域。

在RichTextBox WPF中添加图像

您必须将Image的 Height Width 绑定到RichTextBox的 ActualHeight ActualWidth

<Image Source="C:'Temp'Penguins.jpg"
       Width="{Binding ActualWidth, RelativeSource={RelativeSource
                               Mode=FindAncestor, AncestorType=RichTextBox}}"
       Height="{Binding ActualHeight, RelativeSource={RelativeSource
                             Mode=FindAncestor, AncestorType=RichTextBox}}"/>

似乎有内部填充的RichTextBox。你可以将其设置为负值以移除填充。

<RichTexBox Padding="-5,-2,-5,-2"> // It reads Left, Top, Right, Bottom
   ....
</RichTexBox>

-5,-2,-5,-2改成你想要的值

试试这个:

<Window x:Class="ImageDepth.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <RichTextBox HorizontalAlignment="Center" Height="100" VerticalAlignment="Center" Width="100" BorderBrush="Gray">
        <FlowDocument>
            <BlockUIContainer>
                <Image Height="100" Width="100" Source="C:'Temp'Penguins.jpg" Stretch="Fill"/>
            </BlockUIContainer>                
        </FlowDocument>
    </RichTextBox>
</Grid>

这将告诉你的图像填充整个RichTextBox