Добавление изображения в RichTextBox программно не отображается в свойстве Xaml - PullRequest
3 голосов
/ 27 марта 2010

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

    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 the inserted image
        System.Windows.MessageBox.Show(richTextBox3.Xaml);
    }

Как правильно вставить изображение в RichTextBox во время выполнения, чтобы его можно было сохранить в хранилище данных? В собственности Xaml.

Ответы [ 2 ]

2 голосов
/ 30 марта 2010

Как говорит Отаку, вы не можете использовать свойство XAML для изображений. Однако вы можете выполнить цикл через коллекцию RTB.Blocks, а внутри цикла блока (абзаца) через коллекцию Inlines. Там вы найдете InlineUIContainer с объектом изображения.

2 голосов
/ 28 марта 2010

Не может (по крайней мере, в настоящее время). Обзор RichTextBox Файл справки гласит:

Строка XAML, возвращаемая Xaml собственность не будет включать в себя UIElement объектов, которые присутствуют в содержание.

...