开发者

Adding image to RichTextBox programatically does not show in Xaml property

Trying to add an image to a RichTextBox progamatically from a Stream. The image displays in the text box, however when reading the Xaml property there is no markup for the image.

    private void richTextBox3_Drop(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.FileDrop))
        {
            FileInfo[] files = (FileInfo[])e.Data.GetData(DataFormats.FileDrop);
            using (Stream s = files[0].OpenRead())
            {
                InlineUIContainer container = new InlineUIContainer();
                BitmapImage bmp = new BitmapImage();
                bmp.SetSource(s);
                Image img = new Image();
                img.SetValue(Image.SourceProperty, bmp);
                container.Child = img;

                richTextBox3.Selection.Insert(container);
            }
        }
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        // this doesn't have the markup from t开发者_C百科he inserted image
        System.Windows.MessageBox.Show(richTextBox3.Xaml);
    }

What is the correct way to insert an image into the RichTextBox at runtime so that it can be persisted to a data store? In the Xaml property.


It can't (at least currently). The RichTextBox Overview help file says:

The XAML string returned by the Xaml property will not include any UIElement objects that are present in the content.


As Otaku says, you can't use the XAML property for images. However, you could loop trough the RTB.Blocks collection, and inside the block (paragraph) loop trough the Inlines collection. There you'll find the InlineUIContainer with the image object.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜