Visual studio 如何在Visual Studio 2017中以编程方式添加xaml元素? 我有一个C++和WiRT项目,它用C++代码创建了一个复杂的动态XAML接口。现在我转到最新的VS15.9.0预览版3,它具有对C++/Winrt的平台支持,并且还允许在这样的项目中使用xaml设计器。但是我不想使用设计器,我已经在Tools/Options/Xaml中关闭了它。结果是没有出现任何编程xaml元素。该项目似乎希望我在XAML代码页中输入这些元素,而不是使用C++,例如GRID()、StAcPANELL()、VIEW .RealDebug、AppEnter()、VIEW、StWrand()等。是否仍然可以使用XML的C++接口,如果需要,必须做什么才能启用它?谢谢。

Visual studio 如何在Visual Studio 2017中以编程方式添加xaml元素? 我有一个C++和WiRT项目,它用C++代码创建了一个复杂的动态XAML接口。现在我转到最新的VS15.9.0预览版3,它具有对C++/Winrt的平台支持,并且还允许在这样的项目中使用xaml设计器。但是我不想使用设计器,我已经在Tools/Options/Xaml中关闭了它。结果是没有出现任何编程xaml元素。该项目似乎希望我在XAML代码页中输入这些元素,而不是使用C++,例如GRID()、StAcPANELL()、VIEW .RealDebug、AppEnter()、VIEW、StWrand()等。是否仍然可以使用XML的C++接口,如果需要,必须做什么才能启用它?谢谢。,visual-studio,xaml,c++-winrt,mvvm,wpf,winrt,Visual Studio,Xaml,C++ Winrt,Mvvm,Wpf,Winrt,不幸的是,这不是使用此UI系统的预期方式。基于XAML的UI系统是WPF的后代,WPF依赖于模型-视图-模型(MVVM)模式 此模式打算使用三种类型的类来组成应用程序:视图,主要用XAML编写,只处理给定的显示数据;ViewModels,它是提供视图数据和模型命令的包装器和转换器;最后是模型,它是您的后端业务逻辑类 你不信任设计师的本能是合理的——它会生成混乱且不规则的XAML代码。但这是预览XAML代码外观的一种很好的方法 P>回到您的具体情况,库中的API存在实际问题,这将成为以编程方式定

不幸的是,这不是使用此UI系统的预期方式。基于XAML的UI系统是WPF的后代,WPF依赖于模型-视图-模型(MVVM)模式

此模式打算使用三种类型的类来组成应用程序:视图,主要用XAML编写,只处理给定的显示数据;ViewModels,它是提供视图数据和模型命令的包装器和转换器;最后是模型,它是您的后端业务逻辑类

你不信任设计师的本能是合理的——它会生成混乱且不规则的XAML代码。但这是预览XAML代码外观的一种很好的方法

<> P>回到您的具体情况,库中的API存在实际问题,这将成为以编程方式定义C++中的UI的严重障碍。相反,您需要使用XAML来声明UI。添加和删除网格列定义并没有得到很好的支持,但使用
StackPanel
s和
DockPanel
s是正常的方法

如果您有更具体的问题,请随意在此处提出新问题,但请记住,您可能希望首先在标签下搜索,此外还有,和


如果你有更多的问题,这些问题涉及面很广,对于这里的主站点来说可能太广了,欢迎加入,但请记住,我们大多数人都没有WinRT方面的经验。

Ryan是正确的:C++/WinRT确实支持xaml的编程创建,而且效果很好。在微软的几个c++/winrt人员的帮助下,我想我也知道为什么我的代码没有做任何事情。在我的应用程序的前一版本中,我已经声明主页是C++类,而不是结构体,它通过获取当前窗口和设置CurrutsWeld.FrEATE(网格)来分配XAML的起始网格。但在新的模板应用程序主页是一个结构,这可能很重要,当设置window.Content时,这种方式不再起作用,而是:this->Content(网格)。撇开BlankApp中声明的一些无关问题不谈,我认为这就是答案。如果您像上面那样设置初始内容,编程xaml就可以工作。

谢谢,Zarenor。然而,C++/winrt完全支持以编程方式构建xaml,在我使用当前的VS预览创建一个新项目之前,它工作得非常好。C++/Winrt是非常新的—是否C++/Winrt中所有xaml支持现在都消失了?不,只是库的设计与您所说的完全相反。我最初试图以编程方式(在C#中)在WPF中实例化UI,但遇到了一些障碍,其中必要的成员是
私有的
,或
受保护的
,或完全缺失。我不太熟悉暴露于C++/WinRT的API,所以我不会把我的话当作福音,但我知道这不是系统的设计。我非常怀疑API在最新版本之间是否有显著变化。再次感谢您的回复。对xaml的cppwinrt支持非常强大——我在创建一个简单集成到程序中的复杂动画用户界面时没有遇到任何问题。那些电话还在那里。我再也不能让他们生产xaml了。但愿我有办法联系Kenny Kerr。C++/WinRT中编程支持的性质没有改变一点,对带有XAML标记的C++/WinRT互操作的支持只得到了改进。API在引擎盖下的调用方式相同。我怀疑您在代码或项目配置中遇到了其他错误。谢谢您,Ryan!我希望这是一个配置问题。显然,VS在开始新的cppwinrt项目时创建的BlankApp没有配置为允许编程xaml创建。是否有一个地方我可以找到需要的东西?使用
class
struct
之间没有区别。在C++中,它们是相同的,除了默认的访问说明符之外。无论您做了什么,用
struct
替换
class
可能不会改变任何事情。