0

我正在尝试实现一个自定义控件(我称之为 DataGrid),我选择从Selector. 在 cppwinrt 中,我写了一些这样的

struct DataGrid : SelectorT<DataGrid>
{
}

此代码无法编译。事实上,SelectorT在任何附带的 Windows.UI.Xaml.Controls.Primitives.h 文件中都没有调用这样的结构。我检查了SDK(19041)附带的winmd文件,发现SelectorComposable(具有ComposableAttribute属性),所以,SelectorT应该已经生成了,我错过了什么?非常感谢!

4

1 回答 1

0

没有SelectorT因为Selector不能被子类化。消费投影中的TypenameT类模板不是为了方便而提供的,它们的存在是为了提供支持它的 Xaml 类型的用户定义子类。这允许用户定义他们自己的可覆盖方法的实现。(认为​​它类似于 C++ 虚函数,但采用复杂的 COM 聚合方式)

文档似乎没有清楚地说明哪些类可以子类化,哪些不能。但是,您可以从类型的存在中推断出这一点,ComposableAttribute如在FrameworkElement中。

于 2021-05-14T20:05:48.840 回答