我开始使用新的C ++ / WinRT语言投影来开发UWP XAML自定义控件。我的基本结构正确,但是在定义TemplatePartAttribute
属性时遇到了麻烦。在C#甚至C ++ / CX中,这非常简单,因为该语言对此具有直接支持。
现在在C ++ / WinRT中,我假设我必须在MIDL源中的runtimeclass
上定义属性,但是我不知道如何正确处理。例如:
[Windows.UI.Xaml.TemplatePart(L"PART_Button", ???)]
runtimeclass CustomControl : Windows.UI.Xaml.Controls.Control
{
CustomControl();
/* … */
}
虽然Name
的{{1}}属性很容易设置,因为它是TemplatePartAttribute
,但我该如何设置String
属性-三个? -(在Windows运行时中为Type
)?在正式的C ++ / WinRT文档和MIDL 3.0文档中,我都没有找到关于此的任何文档。
编辑(WORKAROUND):
似乎不需要TypeName
属性来使用代码中的模板部分(使用TemplatePart
方法),无论如何我都可以引用元素GetTemplateChild()
。
答案 0 :(得分:0)
您只需指定第二个参数的类型名称即可。
runtimeclass Button : Windows.UI.Xaml.Controls.Button
{
/* ... */
}
[Windows.UI.Xaml.TemplatePart("PART_Button", Button)]
runtimeclass Control : Windows.UI.XAML.Controls.Control
{
/* ... */
}
类似的东西应该起作用。
答案 1 :(得分:0)
C#[TemplatePart(Name = "PART_Button", Type = typeof(Button))]
。
XAML <Button x:Name="PART_Button"></Button>
。