Silverlight InlineCollection.Add(InlineUIContainer)丢失了吗?

时间:2011-01-06 20:23:37

标签: silverlight textblock inlineuicontainer

我很难将特定类型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'.

2 个答案:

答案 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在做什么,请检查可视树。