2

我很难将特定类型 InlineUIContainer 的内联添加到 TextBlock 的 InlineCollection(内容属性)中。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" });

我有一种感觉,当在 XAML 中指定时,Silverlight 正在使用值转换器来创建运行,例如不使用 InlineContainer 的示例,但我不确定在哪里可以找到。

我得到的具体错误如下:

Cannot add value of type 'System.Windows.Documents.InlineUIContainer' to a 'InlineCollection' in a 'System.Windows.Controls.TextBlock'.
4

2 回答 2

3

正如 Jedidja 所指出的,我们需要在 Silverlight 中使用 RichTextBox 来执行此操作。

于 2012-11-08T10:16:40.170 回答
0

不能直接 Add() Runs,但可以添加包含 Runs 的 Spans。

有趣的是,您也可以这样做:

textBlock.Inlines.Clear();
textBlock.Inlines.Add(new Span());
textBlock.Inlines[0] = new Run();

并不是说绕过框架积极试图阻止你做的事情是一个好主意。

PS 如果您无法弄清楚 XAML 在做什么,请检查可视化树。

于 2012-11-26T18:57:30.930 回答