2008-12-19 47 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使用正確的鍵並將它們合併到您的應用程序資源中。 如果以這種方式更改資源,則生成的代碼將在運行時遵守這些更改。

您甚至可以在運行時更改資源,但是您的問題顯示爲不需要。