我需要使用 WPF 数据绑定显示以下内容(值发生变化)。标题必须是粗体,信息行是普通文本。如果给定标头的信息不存在,我想折叠该部分,包括标头。我更喜欢所有数据(标题和信息项)都位于一个格式化字符串中,该字符串可以在我想要的位置换行。
Header1:
我的信息1
我的信息2
Header2:
我的信息3
我的信息4
还有一种方法可以尝试。使用TextBlock.Inlines。然后将您的模型绑定到 TextBlock,并且可以自定义值转换器或者通过自定义附加属性解析您的模型以填充 TextBlock 的内联。
以下是附加属性的示例,它采用文本字符串并使每隔一个单词变为粗体:
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 演示,但您明白了。
希望这可以帮助。
干杯,安瓦卡。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)