【发布时间】:2011-09-18 17:10:32
【问题描述】:
我有一个派生自 ComboBox 的 WPF CustomControl,我正在尝试弄清楚如何自定义项目的显示。基本上,我希望大多数项目以普通文本显示,但是, 根据每个项目对象中的数据,我希望一些显示粗体或斜体。通常我直接在 XAML 中执行此操作,但由于它是 CustomControl,我有点不知所措。我希望能够直接在代码中绑定它,但我也对可能意味着加载外部 XAML 样式的方法持开放态度,如果你能告诉我如何做到这一点(我不知道)。
下面的代码是我正在使用的控件的基本近似值,但大大简化了。但是,数据加载方式的基本概念是相同的,并且数据对象本身来自外部源,因此它们无论如何都无法访问控件本身。模板需要 只需脱离基本属性即可。
public class FormatData
{
public FormatData() { }
public string Name { get; set; }
public bool Bold { get; set; }
public bool Italic { get; set; }
}
public class FormatDropDown : System.Windows.Controls.ComboBox
{
public FormatDropDown()
{
}
public void LoadSelection(FormatData[] data)
{
try
{
this.ItemsSource = data;
this.DisplayMemberPath = "Name";
}
catch (Exception e) { MessageBox.Show(e.Message); ; }
}
}
控件填充如下:
var data = new FormatData[]{
new FormatData(){
Name = "Normal"
},
new FormatData(){
Name = "Bold",
Bold = true
},
new FormatData(){
Name = "Italic",
Italic = true
},
new FormatData(){
Name = "BoldItalic",
Bold = true,
Italic = true
},
};
fddTest.LoadSelection(data);
有人知道我如何实现这一目标吗?
【问题讨论】:
标签: wpf combobox formatting styles itemtemplate