Я хочу извлечь общий код из нескольких компонентов WinRT в один базовый класс, поэтому мне не нужно копировать&мимо него. У меня есть следующий базовый класс:
[Windows::Foundation::Metadata::WebHostHidden]
ref class ExpandableView : public Windows::UI::Xaml::DependencyObject
{
public:
static void onIsExpandedChanged(Windows::UI::Xaml::DependencyObject^ object,
Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ arguments);
public:
property bool IsExpanded
{
bool get(){return (bool)GetValue(IsExpandedProperty);}
void set(bool value){SetValue(IsExpandedProperty, value);}
}
static property Windows::UI::Xaml::DependencyProperty^ IsExpandedProperty
{
Windows::UI::Xaml::DependencyProperty^ get(){return _IsExpandedProperty;}
}
protected:
ExpandableView();
virtual void viewExpanded();
virtual void viewCollapsed();
private:
void _expand();
void _collapse();
private:
static Windows::UI::Xaml::DependencyProperty^ _IsExpandedProperty;
};
И я создаю несколько пользовательских элементов управления, которые должны быть как-то унаследованы от этого базового класса. И это невозможно сделать так, как я хочу, потому что класс winrt может наследовать только один класс ref, а другие должны быть интерфейсами. Но мне нужен именно этот класс, у которого есть свойство зависимости, которое имеет некоторую логику, когда оно установлено, и я не хочу копировать&мимо этого свойства во всех моих классах.
Вопрос в том, как этого добиться с помощью WinRT.
Вы пытались использовать шаблон и наследование определенного необходимого класса:
template<typename BaseClass>
ref class ExpandableView : public BaseClass;
Теперь подклассы повторного использования ExpandableView
может наследовать все, что им нужно, не только Windows::UI::Xaml::DependencyObject
,
Других решений пока нет …