#c_sharp #net #wpf #xaml
Есть некий generic класс public class GenericClass{ public object this[string s] { return s; } } Ну и экземпляр класса используется как DataContext. Тогда для вызова из xaml будет такая разметка и вернет она текст "qwer". Вопрос, а можно ли какими либо ухищрениями избавиться от квадратных скобок? Вот есть класс DataView, как там это реализовано?
Ответы
Ответ 1
Нашел решение. Класс public class GenericClassдолжен наследовать интерфейс ICustomTypeDescriptor и индексатор в нем вообще не нужен. Тогда Мне нужно из конструктора просто подбирать передаваемый объект типа Т и использовать его как ресурс для реализации интерфейса. Я не выложу дословный код, потому что не имею его под рукой. Могу лишь из памяти набросать его основу Класс: public class ViewModel : ICustomTypeDescriptor { T _source; public ViewModel(T obj) { _source = obj; } // далее идет реализация интерфейса. Все методы сделаны идентично, я приведу пример одного public AttributeCollection GetAttributes() { return TypeDescriptor.GetAttributes(_source); } } Класс еще не готов. Нужно еще наследовать INotifyPropertyChanged и предусмотреть мониторинг свойств модели или иные способы изменения свойств из кода. Но это совсем другая история )
Комментариев нет:
Отправить комментарий