为啥在自定义 WinRT C++/CX 控件中默认添加 [Windows::Foundation::Metadata::WebHostHidden]?
Posted
技术标签:
【中文标题】为啥在自定义 WinRT C++/CX 控件中默认添加 [Windows::Foundation::Metadata::WebHostHidden]?【英文标题】:Why is [Windows::Foundation::Metadata::WebHostHidden] added by default in custom WinRT C++/CX controls?为什么在自定义 WinRT C++/CX 控件中默认添加 [Windows::Foundation::Metadata::WebHostHidden]? 【发布时间】:2012-09-24 15:43:57 【问题描述】:当我在 WinRT C++/CX 项目中创建新控件时,Visual Studio 2012 默认添加类属性[Windows::Foundation::Metadata::WebHostHidden]
。
例子:
namespace WindowsRuntimeComponent1
[Windows::Foundation::Metadata::WebHostHidden]
public ref class MyUserControl sealed
public:
MyUserControl();
;
是否有任何记录的原因? (我做了功课,但我
找不到这条信息)
据我所知,使用属性[WebHostHidden]
使类
WinRT html/javascript 项目不可见。这是否意味着我
无法在 C++/CX 中创建可在 Javascript 中使用的控件?
【问题讨论】:
【参考方案1】:据我所知,使用属性
[WebHostHidden]
会使类对于 WinRT HTML/JavaScript 项目不可见。
这是正确的:这个属性隐藏了 JavaScript 投影中的类型,所以从 JavaScript 来看,就好像该类型不存在。
这是否意味着我无法在 C++/CX 中创建可在 JavaScript 中使用的控件?
您不能使用 JavaScript 中的 XAML 控件,句号。使用 JavaScript 时,UI 是使用 HTML 而非 XAML 创作的。
【讨论】:
是否有 other 用例,除了来自用户编写的控件,需要此属性?例如,假设我的 C++/Cx 组件根本没有处理 w/ UI,在这种情况下应该使用 WebHostHidden 注释这个组件?以上是关于为啥在自定义 WinRT C++/CX 控件中默认添加 [Windows::Foundation::Metadata::WebHostHidden]?的主要内容,如果未能解决你的问题,请参考以下文章
在 .cpp 文件中声明具有实现的 C++/CX WinRT 属性的语法是啥?
如何在“native c ++”环境中使用WinRT IAsyncOperation *对象
相当于C ++ / WinRT中的Platform :: IBoxArray