У меня есть RadComboBox от telerik, в котором есть несколько защищенных сеттеров для некоторых его свойств.Я хочу иметь возможность устанавливать каждое свойство, чтобы я получил его от этого элемента управления и создал собственный элемент управления.Я также сделал то же самое для его элемента items.
public class RadComboBoxItem : ListBoxItem
{
...
public bool IsHighlighted
{
get
{
return (bool)GetValue(IsHighlightedProperty);
}
protected set
{
this.SetValue(IsHighlightedPropertyKey, value);
}
}
...
}
public class MyCustomComboBoxItem : RadComboBoxItem
{
public void HighlightItem(bool _default)
{
this.IsHighlighted = _default;
}
}
В моем случае у меня есть список RadComboBoxItems, и я хочу создать новый список типа MyCustomComboBoxItem, чтобы я мог получить доступ к установщику для каждого элементаиз первого списка на основе данных:
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
...
foreach (RadComboBoxItem _item in _listOfRadComboBoxItems)
{
MyCustomComboBoxItem _customCBI = new MyCustomComboBoxItem();
_customCBI.Load(_customCBI.GetType(), _item, true);
_listOfCustomCBI.Add(_newB2);
}
}
}
Я нашел другой пост с объяснением того, что я пытаюсь сделать, но мой случай немного отличается, и я позаимствовал метод Load здесь:
Обновление свойств элемента ObservableCollection с использованием INotifyPropertyChanged
public static class ExtentionMethods
{
public static void Load<T>(this T target, Type type, T source, bool deep)
{
foreach (PropertyInfo property in type.GetProperties())
{
if (property.CanWrite && property.CanRead)
{
if (!deep || property.PropertyType.IsPrimitive || property.PropertyType == typeof(String))
{
property.SetValue(target, property.GetValue(source, null), null);
}
else
{
object targetPropertyReference = property.GetValue(target, null);
targetPropertyReference.Load(targetPropertyReference.GetType(), property.GetValue(source, null), deep);
}
}
}
}
}
Резюме: Я пытаюсь создать собственный ComboBox из RadComboBox Telerik.Это имеет ComboBoxItems с защищенным установщиком свойств зависимостей IsHighlighted.Я создал MyCustomComboBoxItem, чтобы обойти это ограничение, но не могу скопировать RadComboBoxItem в MyCustomComboBoxItem.
Причина: Я хочу установить его, чтобы помочь пользователю влучший опыт.
Спасибо.