WPF データバインディングを使用して以下を表示する必要があります (値が変わります)。ヘッダーは太字にする必要があり、情報行は通常のテキストです。特定のヘッダーの情報が存在しない場合は、ヘッダーを含めてそのセクションを折りたたむ必要があります。すべてのデータ (ヘッダーと情報項目) を、必要な場所で改行できる 1 つの書式設定された文字列にすることを好みます。
ヘッダー1:
私の情報 1
私の情報 2
ヘッダー 2:
私の情報 3
私の情報 4
WPF データバインディングを使用して以下を表示する必要があります (値が変わります)。ヘッダーは太字にする必要があり、情報行は通常のテキストです。特定のヘッダーの情報が存在しない場合は、ヘッダーを含めてそのセクションを折りたたむ必要があります。すべてのデータ (ヘッダーと情報項目) を、必要な場所で改行できる 1 つの書式設定された文字列にすることを好みます。
ヘッダー1:
私の情報 1
私の情報 2
ヘッダー 2:
私の情報 3
私の情報 4
もう1つのアプローチを試してください。TextBlock.Inlinesを使用します。次に、モデルを TextBlock にバインドし、カスタム値コンバーターまたはカスタム添付プロパティを介してモデルを解析し、TextBlock のインラインを設定します。
以下は、テキスト文字列を受け取り、2 つおきの単語を太字にする Attached プロパティの例です。
public class RunExtender : DependencyObject
{
public static string GetText(DependencyObject obj)
{
return (string)obj.GetValue(TextProperty);
}
public static void SetText(DependencyObject obj, string value)
{
obj.SetValue(TextProperty, value);
}
public static readonly DependencyProperty TextProperty = DependencyProperty.RegisterAttached("Text", typeof(string), typeof(RunExtender), new PropertyMetadata(string.Empty, OnBindingTextChanged));
private static void OnBindingTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var bindingText = e.NewValue as string;
var text = d as TextBlock;
if (text != null)
{
text.Inlines.Clear();
var words = bindingText.Split(' ');
for (int i = 0; i < words.Length; i++)
{
var word = words[i];
var inline = new Run() {Text = word + ' '};
if (i%2 == 0)
{
inline.FontWeight = FontWeights.Bold;
}
text.Inlines.Add(inline);
}
}
}
}
これは製品品質のコードではなく、Silverlight のデモから取得したものですが、おわかりいただけると思います。
お役に立てれば。
乾杯、アンバカ。
スタイルで太字にしたい場合は、文字列を分割してTextBlocks
aStackPanel
内で使用するのが最善の策だと思いますExpander
。
または、文字列全体でそれを行うこともできますが、文字列にはタグRichTextBox
が含まれている必要があると思います。<bold></bold>