【问题标题】:How to change the layout of a WPF Control from outside of that Control如何从该控件外部更改 WPF 控件的布局
【发布时间】:2008-12-19 14:55:08
【问题描述】:

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

我的设想是能够生成一个控件,其中包含基于我的数据类型的文本块、标签、日期选择器、文本框、复选框等基本控件。

我最想念的是永远不要接触生成的 XAML 代码并完全控制它之外的布局。在网络世界中,我可以通过生成“语义”html,然后使用 CSS 选择器来选择节点并定位它们,从而在技术上做到这一点。使用 CSS/HTML,我可以完全改变布局,并且永远不会触及生成的 html。

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

谢谢! 乔恩

【问题讨论】:

    标签: wpf user-interface code-generation


    【解决方案1】:

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

    【讨论】:

    • 感谢 Ortus!一直在找这个大约 30 分钟。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      您甚至可以在运行时更改资源,但您的问题看起来好像没有必要。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-24
        相关资源
        最近更新 更多