RichTextBox
私は最近、文字列とその文字列に関するいくつかのプロパティを保持するオブジェクトのコレクションにバインドされた段落を表示するのが良い解決策だと思うプロジェクトに取り組んでいました。私はこのようなことができることを望んでいました:
<RichTextBox Name="rtb" IsReadOnly="True" FontSize="14" FontFamily="Courier New">
<FlowDocument>
<Paragraph>
<Run Foreground="Red" Text="{Binding foo}"/>
<Run Foreground="Green" Text="{Binding bar}"/>
<Run Foreground="Blue" Text="{Binding baz}"/>
</Paragraph>
</FlowDocument>
</RichTextBox>
これは問題なく動作しますが、これは事前にすべてのバインディングを定義していますが、実際には実行時までわかりません。各文字列はコレクションに格納されます。Run
複数のブロックを定義してバインドし、それらをすべて に配置して表示する方法を考えようとしていましたRichTextBox
。可能であれば、主に xaml ソリューションを使用したいと思いますが、コード ビハインドでそれを行う必要がある場合は、バインディングが保持され、初期ロード後にすべてが適切に更新される限り、問題ない可能性があります。
私はこのようなことを試しましたが、コードビハインドからText
a のプロパティにバインドする方法を理解するのに苦労していました:Run
foreach (var item in col)
{
Run run = new Run();
Binding b = new Binding();
b.Source = this;
b.Path = new PropertyPath(item.StaticText);
run.SetBinding(run.Text, b); //Tells me Text is not a dependency property
//But it could be bound if this were xaml?
}
また、アイテムのデータ テンプレートとして持ってItemsControl
いるを入れてみましたが、データ テンプレートをタグにすることはできず、とにかくうまくいくかどうかわかりません。RichTextBox
Run
Run
最善のアプローチに関するガイダンス、または私のソリューションの問題点。