我想在 WP7/8 的 RichTextBox 控件中插入一个图像。
我可以在 XAML 中做到这一点,并且工作正常。
<RichTextBox>
<Paragraph>
<InlineUIContainer>
<Image Source="/ApplicationIcon.png"/>
</InlineUIContainer>
</Paragraph>
</RichTextBox>
我可以在代码 C# 中做到这一点:
Image MyImage = new Image();
MyImage.Source = new BitmapImage(new Uri("/ApplicationIcon.png", UriKind.RelativeOrAbsolute));
MyImage.Height = 50;
MyImage.Width = 50;
InlineUIContainer MyUI = new InlineUIContainer();
MyUI.Child = MyImage;
Paragraph myParagraph = new Paragraph();
myRichTextBox.Blocks.Add(myParagraph);
myParagraph.Inlines.Add(MyUI);
但我不能这样做。
string xaml =
@"<Section xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">
<Paragraph>
<InlineUIContainer>
<Image Source=""/ApplicationIcon.png""/>
</InlineUIContainer>
</Paragraph>
</Section>";
myRichTextBox.Xaml = xaml;
我有错误。
我在这里读到了它:
这是因为 XAML 解析器不知道如何解析段落、下划线等元素。为了解决这个问题,必须将具有实际内容的段落包装在定义命名空间的 Section 元素中,以便解析元素!
但<Section xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">
不要帮忙。
这不是我的心血来潮,对我来说以这种方式创建内容真的很容易。(我使用 StringFormat、Replace 等)。
可能是什么问题?
提前致谢!
更新
从这篇文章:
public MainPage()
{
InitializeComponent();
ListBox list = new ListBox();
list.ItemTemplate = this.CreateDataTemplate();
list.ItemsSource = new List<string>{"first","second","third","forth"};
ContentPanel.Children.Add(list);
}
private DataTemplate CreateDataTemplate()
{
string xaml = @"<DataTemplate
xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"">
<Grid>
<RichTextBox IsReadOnly=""True"">
<Paragraph>
<InlineUIContainer>
<Image Source=""http://i.stack.imgur.com/m0UAA.jpg?s=32&g=1"" />
</InlineUIContainer>
</Paragraph>
</RichTextBox>
</Grid>
</DataTemplate>";
DataTemplate dt = (DataTemplate)XamlReader.Load(xaml);
return dt;
}
行中的异常 "System.Windows.Markup.XamlParseException"
:
DataTemplate dt = (DataTemplate)XamlReader.Load(xaml);