WP7/8 の RichTextBox コントロールに画像を挿入したい。
XAMLで実行でき、正常に動作します。
<RichTextBox>
<Paragraph>
<InlineUIContainer>
<Image Source="/ApplicationIcon.png"/>
</InlineUIContainer>
</Paragraph>
</RichTextBox>
私はコードC#でそれを行うことができます:
Image MyImage = new Image();
MyImage.Source = new BitmapImage(new Uri("/ApplicationIcon.png", UriKind.RelativeOrAbsolute));
MyImage.Height = 50;
MyImage.Width = 50;
InlineUIContainer MyUI = new InlineUIContainer();
MyUI.Child = MyImage;
Paragraph myParagraph = new Paragraph();
myRichTextBox.Blocks.Add(myParagraph);
myParagraph.Inlines.Add(MyUI);
しかし、私はこのようにすることはできません。
string xaml =
@"<Section xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">
<Paragraph>
<InlineUIContainer>
<Image Source=""/ApplicationIcon.png""/>
</InlineUIContainer>
</Paragraph>
</Section>";
myRichTextBox.Xaml = xaml;
エラーがあります。
私はそれについてここで読んだ:
これは、XAML パーサーが Paragraph、Underline などの要素を解決する方法を認識していないために発生しています。これを修正するには、要素を解決できるように、実際のコンテンツを含む段落を名前空間を定義する Section 要素でラップする必要があります。
しかし<Section xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">
、助けないでください。
これは私の気まぐれではありません。この方法でコンテンツを作成するのは本当に簡単です。(StringFormat、Replace などを使用します)。
問題は何でしょうか?
前もって感謝します!
アップデート
この記事から:
public MainPage()
{
InitializeComponent();
ListBox list = new ListBox();
list.ItemTemplate = this.CreateDataTemplate();
list.ItemsSource = new List<string>{"first","second","third","forth"};
ContentPanel.Children.Add(list);
}
private DataTemplate CreateDataTemplate()
{
string xaml = @"<DataTemplate
xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"">
<Grid>
<RichTextBox IsReadOnly=""True"">
<Paragraph>
<InlineUIContainer>
<Image Source=""http://i.stack.imgur.com/m0UAA.jpg?s=32&g=1"" />
</InlineUIContainer>
</Paragraph>
</RichTextBox>
</Grid>
</DataTemplate>";
DataTemplate dt = (DataTemplate)XamlReader.Load(xaml);
return dt;
}
行の例外 "System.Windows.Markup.XamlParseException"
:
DataTemplate dt = (DataTemplate)XamlReader.Load(xaml);