2011-01-06 70 views
2

我很難將特定類型InlineUIContainer的內聯添加到TextBlock的InlineCollection(Content屬性)中。看來InlineCollection的。新增()方法不接受這種類型的,但是你可以清楚地通過XAML設置沒有明確標記的內容作爲InlineContainer,這表現在許多例子:缺少Silverlight InlineCollection.Add(InlineUIContainer)?

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

只是一個說明,我幾乎積極這在WPF中的作品,雖然我還沒有嘗試過。我有一種感覺,這是Silverlight中沒有實現的東西。如果您在MSDN上查看InlineUIContainer.Child的.NET Framework 4說明,可以看到一個與我擁有的內容非常相似的示例,但我無法在頁面的Silverlight版本上找到相同的示例(在它們的例如,他們使用RichTextBox而不是TextBlock)。 – Sprague 2011-01-06 20:33:24

+1

這在WPF中工作(http://stackoverflow.com/questions/861409/wpf-making-hyperlinks-clickable)。我認爲我們被迫在Silverlight中使用RichTextBox。 – Jedidja 2011-05-25 17:17:47

回答

3

正如Jedidja指出的那樣,我們需要使用的RichTextBox要做到這一點在Silverlight。

0

您無法添加()直接運行,但可以添加包含運行的Spans。

有趣的是,你也可以這樣做:

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

不,這是破解周圍什麼框架正在積極試圖阻止你做一個好主意。

P.S.如果您無法弄清楚XAML正在做什麼,請檢查可視化樹。