我很难将特定类型InlineUIContainer的内联添加到TextBlock的InlineCollection(Content属性)中。看起来InlineCollection的.Add()方法不接受这种类型,但是你可以通过XAML清楚地设置它而不将内容明确地标记为InlineContainer,如许多例子中所示:
http://msdn.microsoft.com/en-us/library/system.windows.documents.inlineuicontainer.aspx
是否可以以编程方式添加其中一个,如下所示?
Target.Inlines.Add(new Run() { Text = "Test" });
Target.Inlines.Add(new InlineUIContainer() {
Child = new Image() { Source = new BitmapImage(new Uri("http://example.com/someimage.jpg")) } });
Target.Inlines.Add(new Run() { Text = "TestEnd" });
我有一种感觉,Silverlight正在使用值转换器来创建在XAML中指定的运行,如在不使用InlineContainer的示例中,但我不确定在哪里查找。
我得到的具体错误如下:
Cannot add value of type 'System.Windows.Documents.InlineUIContainer' to a 'InlineCollection' in a 'System.Windows.Controls.TextBlock'.
答案 0 :(得分:3)
正如Jedidja所指出的,我们需要使用RichTextBox在Silverlight中执行此操作。
答案 1 :(得分:0)
你不能直接运行Add(),但你可以添加包含运行的Spans。
有趣的是,您也可以这样做:
textBlock.Inlines.Clear();
textBlock.Inlines.Add(new Span());
textBlock.Inlines[0] = new Run();
并不是说破解框架正在积极尝试阻止你做什么是一个好主意。
P.S。如果你无法弄清楚XAML在做什么,请检查可视树。