如何从该控件外部更改WPF控件的布局

时间:2008-12-19 14:55:09

标签: wpf user-interface code-generation

我很喜欢我的应用程序的服务/数据层的代码生成。我真正喜欢做的是根据我用来生成服务/数据层的元数据生成一些基本的WPF控件,数据模板或其他一些XAML代码。编辑:这一代在编译之前完成。

我所设想的是能够根据我的数据类型生成一个控件,其中包含TextBlocks,Labels,Date Pickers,Textboxes,Checkboxes等基本控件。

我遗漏的一件大事就是以某种方式永远不会触及生成的XAML代码并完全控制布局。在网络世界中,我可以通过生成“语义”html然后使用CSS选择器来选择节点并定位它们来从技术上做到这一点。使用CSS / HTML,我可以完全改变布局,而不会触及生成的HTML。

WPF中是否存在从该代码外部控制控件或数据模板的布局? (选择器,可视化继承等?)

谢谢! 乔恩

3 个答案:

答案 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使用正确的密钥并将它们合并到您的应用程序资源中。 如果以这种方式更改资源,则生成的代码将在运行时遵循这些更改。

你甚至可以在运行时更改资源,但你的问题就好像没有必要一样。