0

我想从几个 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 来实现呢?

4

1 回答 1

1

您是否尝试过使用所需的特定类的模板和继承:

template<typename BaseClass>
ref class ExpandableView : public BaseClass;

现在重用的子类ExpandableView可以继承他们需要的任何东西,而不仅仅是Windows::UI::Xaml::DependencyObject.

于 2013-01-28T05:14:49.453 回答