2

特定のタイプの InlineUIContainer のインラインを TextBlock の InlineCollection (Content プロパティ) に追加するのが困難です。InlineCollection の .Add() メソッドはこの型を受け入れないようですが、多くの例で示されているように、コンテンツを InlineContainer として明示的にマークしなくても、XAML を介して明確に設定できます。

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" });

InlineContainer を使用しない例のように XAML で指定された場合、Silverlight が値コンバーターを使用して実行を作成しているように感じますが、どこを調べればよいかわかりません。

私が得ている特定のエラーは次のとおりです。

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 に答える