2011-01-06 18 views
2

特定のInlineUIContainerのインラインをTextBlockのInlineCollection(Contentプロパティ)に追加するのが難しいです。それはするInlineCollectionの.Add()メソッドは、このタイプを受け入れていない表示されます、しかし、あなたは明らかに多くの例で示したように、明示的にInlineContainerなどのコンテンツをマークせずにXAMLを通してそれを設定することができます。Silverlight InlineCollection.Add(InlineUIContainer)が見つかりませんか?

http://msdn.microsoft.com/en-us/library/system.windows.documents.inlineuicontainer.aspx

です次のようにこれらのプログラムの1つをプログラムで追加することは可能ですか?

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がInlineContainerを使用していない例のようにXAMLで指定されたランを作成するために、値コンバーターを使用していることでありますが、私は見てどこか分かりません見つけ出す。

次のように私は取得しています特定のエラーがある:

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バージョンのページで同じ例を見つけることができません。たとえば、TextBlockではなくRichTextBoxを使用します)。 – Sprague

+1

これはWPF(http://stackoverflow.com/questions/861409/wpf-making-hyperlinks-clickable)で動作します。私は、SilverlightでRichTextBoxを使用することを余儀なくされていると思います。 – Jedidja

答えて

3

Jedidjaで指摘したように、私たちは、Silverlightでこれを行うには、リッチテキストボックスを使用する必要があります。

+0

これは間違っています。 –

+1

あなたのコメントを書き留めて、それについて間違っていることを私に説明してください。 – Sprague

+0

これは私にとって参考になりました。私はMUIのBBCodeロジックをSilverlightに移植していましたが、これは途中で遭遇した問題の1つでした。具体的には、HyperLinkオブジェクトを含むSpanオブジェクトは、SpanがTextBlockに追加されたときに例外を発生させました。 TextBlockを(必要であった段落に囲まれた)RichTextBlockに置き換えると、完全に機能しました。 –

0

Add()を直接実行することはできませんが、Runを含むスパンを追加することはできます。

興味深いことに、あなたもこれを行うことができます:それは、フレームワークを積極的にやってからあなたを防ぐためにしようとしているものを周りにハックすることをお勧めします

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

ないこと。

P.S. XAMLの動作を把握できない場合は、ビジュアルツリーを調べてください。

関連する問題