У меня есть WPF CustomControl, производный от ComboBox, и я пытаюсь выяснить, как настроить отображение элементов.По сути, я хочу, чтобы большинство элементов отображалось с обычным текстом, но, в зависимости от данных в каждом объекте, мне бы хотелось, чтобы некоторые элементы отображались либо жирным шрифтом, либо курсивом.Обычно я делаю это прямо в 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);
Кто-нибудь знает, как мне этого добиться?