2010-12-16 21 views
1

MSDNのドキュメントでは、XAMLプロパティを使用してRichTextBoxの一部である画像を書き出すことはできません。これは問題ありませんが、私はそれを回避し、ブロックを手動で見直して対処することができます。xamlを使用してsilverlight richtextareaに画像を読み込む

私の質問は、Imageを組み込むようにXAMLを手動で再構築すると、RichTextBoxがxamlから読み込むことができるのですか?

私は反射と手動XAMLエクスポートを既に実装しており、画像なしで完全に動作します。写真有り

それは、この生成します。私は、XAMLのプロパティと休憩を経てRTBにフィードバック

<Section xml:space="preserve" HasTrailingParagraphBreakOnPaste="False" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> 
<Paragraph TextAlignment="Left" FontSize="20" FontFamily="Portable User Interface" FontWeight="Normal" FontStyle="Normal" FontStretch="Normal" Foreground="#FF000000" > 
<Run Text="Test" FontSize="20" FontFamily="Portable User Interface" FontWeight="Normal" FontStyle="Normal" FontStretch="Normal" Foreground="#FF000000" /> 
</Paragraph> 
<Paragraph TextAlignment="Left" FontSize="20" FontFamily="Portable User Interface" FontWeight="Normal" FontStyle="Normal" FontStretch="Normal" Foreground="#FF000000" > 
<InlineUIContainer> 
<Image Source="./desert.jpg" Height="150" Width="200" /> 
</InlineUIContainer> 
<Run Text="" FontSize="20" FontFamily="Portable User Interface" FontWeight="Normal" FontStyle="Normal" FontStretch="Normal" Foreground="#FF000000" /> 
</Paragraph> 
</Section> 

を! (例外はちょうどIllegalArgmentExceptionは「価値」を言って、役に立たないです。

あなただけInlineUIContainerセクションの罰金を取る場合は!

私は画像の場所が間違っているとその可能性の問題があればうまくできませんまたはリッチテキストボックスがちょうど離れでコードから画像を受け入れない

MSDNドキュメントがそれを示しているので、私はそれがXAMLからの画像を指定するために、おそらくだと思う唯一の理由は、次のとおりです。。http://msdn.microsoft.com/en-us/library/ee681613(VS.95).aspx

任意のアイデア

Ta、

アンディ。

+0

私は時間があれば、私はちょうどそれにこのくらいの時間を費やしたくない、コードにSilverlightとデバッグのためのシンボルを得ることができると思います!助け

<Image Source="AHBSBus;component/images/mail.png" Stretch="None" Height="23"> </Image> 

として

: – Andy

答えて

2

RichTextBoxXamlプロパティは、InlineUIContainerを入力または出力できません。すべて、

Section section = (Section)XamlReader.Load(yourXaml); 
yourRTB.Blocks.Add(section); 
+0

XamlReaderで同じエラーが発生するため、これは動作しません –

+0

Wow、snap!:)投稿時にあなたの応答が見られませんでした! @Akash Xamlリーダーがありがたいことに働いています! :) – Andy

+0

ありがとう。非常に素晴らしい。 –

0

まあ、私はそれを行う方法を見つけた - :私が最初にしようとするだろう周り

一つの仕事はRichTextBox.Blocksコレクションに結果を追加する代わりに、あなたのXAMLにXamlReaderを使用することですつまり、XAMLプロパティを使用してRTBにXAMLを直接ロードしていません。私はこのコードに従って、ブロック一つずつ付加し、XamlReaderオブジェクトを使用して、第1のオブジェクトにXAMLのロードに戻すしなければならなかったRTBに画像とXAMLをロードするために

 // Load up the XAML using the XamlReader 
     Object o = XamlReader.Load(xamlTb.Text); 
     if (o is Section) 
     { 
      // Make sure its a section and clear out the old stuff in the rtb 
      Section s = o as Section; 
      rtb.Blocks.Clear(); 

      // Remove the blocks from the section first as adding them straight away 
      // to the rtb will throw an exception because they are a child of two controls. 
      List<Block> tempBlocks = new List<Block>(); 
      foreach (Block block in s.Blocks) 
      { 
       tempBlocks.Add(block); 
      } 
      s.Blocks.Clear(); 

      // Add them block by block to the RTB 
      foreach (Block block in tempBlocks) 
      { 
       rtb.Blocks.Add(block); 
      } 
     } 

私が助けてくれたほどうまくはいませんが、XAMLプロパティはInlineUIElementsを解析しないと思います。

アンディ。

0

XAML ./desert.jpgソースでは機能しません。代わりに、ここでは最初のものは

は、あなたのImagePathのはあなたが書く必要がある「はコンポーネント」ProjectBus

secondoneが固定されている名前空間である二つの重要なキーワードは、この1

<Image Source="YourNameSpaceBus;component/images/desert.jpg" 
Height="150" Width="200" /> 

使用しています。 そうでない場合でも、表示時に表示可能であっても、実行時に動作しないことがあります。そのような希望が

関連する問題