我很喜欢我的应用程序的服务/数据层的代码生成。我真正喜欢做的是根据我用来生成服务/数据层的元数据生成一些基本的WPF控件,数据模板或其他一些XAML代码。编辑:这一代在编译之前完成。
我所设想的是能够根据我的数据类型生成一个控件,其中包含TextBlocks,Labels,Date Pickers,Textboxes,Checkboxes等基本控件。
我遗漏的一件大事就是以某种方式永远不会触及生成的XAML代码并完全控制布局。在网络世界中,我可以通过生成“语义”html然后使用CSS选择器来选择节点并定位它们来从技术上做到这一点。使用CSS / HTML,我可以完全改变布局,而不会触及生成的HTML。
WPF中是否存在从该代码外部控制控件或数据模板的布局? (选择器,可视化继承等?)
谢谢! 乔恩
答案 0 :(得分:2)
使用Grid.SetColumn( UIElement, value )
& Grid.SetRow( UIElement, value )
。
答案 1 :(得分:0)
如果我理解正确,你想动态生成XAML,然后解析它并使用它吗?
如果是这样,您可以使用System.Windows.Application.LoadComponent(Uri uri)将其解析/加载到内存中。或者您可以使用XamlReader.Load(...)。
编辑(再次阅读问题,添加一些内容): 您可以使用WPF样式来定位和控制这些元素的布局。
答案 2 :(得分:0)
您可以使用以下资源更改WPF对话框中的样式(甚至ControlTemplates): 如果资源(在任何级别,例如Application)包含带有TargetType = TextBox的Style,它将影响Control中未明确声明偏离样式的所有TextBox。 或者,您可以告诉UserControl使用某些样式键(StaticResource),然后决定为这些样式键插入哪些DataTemplate。只需选择DataTemplate-ResourceFiles,其中DataTemplates使用正确的密钥并将它们合并到您的应用程序资源中。 如果以这种方式更改资源,则生成的代码将在运行时遵循这些更改。
你甚至可以在运行时更改资源,但你的问题就好像没有必要一样。