2008-12-19 49 views
0

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

我的设想是能够根据我的数据类型生成一个控件,该控件具有基本的控件TextBlocks,Labels,Date Pickers,Textboxes,Checkboxes等。

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

WPF中是否有某种方式来控制该代码之外的控件或数据模板的布局? (选择器,视觉继承等?)

谢谢! Jon

回答

0

如果我理解正确,您想动态生成XAML,然后解析并使用它?

如果是这样,你可以使用System.Windows.Application.LoadComponent(Uri uri)将它解析/加载到内存中。或者你可以使用XamlReader.Load(...)。

编辑(再次阅读问题,所以添加一些东西): 您可以使用WPF样式来定位和控制这些元素的布局。

2

使用Grid.SetColumn(UIElement, value) & Grid.SetRow(UIElement, value)

+0

谢谢Ortus!一直在寻找这约30分钟。 – Brad 2010-01-08 08:39:35

0

您可以使用资源更改WPF对话框中的样式(甚至是控件模板): 如果资源(任何级别,例如应用程序)包含带有TargetType = TextBox的样式,则会影响所有文本框没有明确说明偏离风格的控件。 或者,您可以告诉您的UserControl使用某些Style-Keys(StaticResource),然后再决定插入这些Style-Keys的DataTemplate。只需选择DataTemplate-ResourceFiles,其中DataTemplates使用正确的键并将它们合并到您的应用程序资源中。 如果以这种方式更改资源,则生成的代码将在运行时遵守这些更改。

您甚至可以在运行时更改资源,但是您的问题显示为不需要。