【问题标题】:Designer code in Windows phone 7Windows phone 7 中的设计器代码
【发布时间】:2013-09-30 14:12:38
【问题描述】:

我在 windows phone 7 中使用 XAML 创建了一个 UI。我想知道此代码是否作为 C# 代码存在于某个文件中,如果存在,由 xaml 生成的设计器代码在哪里?

【问题讨论】:

  • 其实我设计了一个stackpanel,想用properties代码以编程方式生成同样的stackpanel
  • @acebox 不会在任何基于 XAML 的技术中的过程代码中创建或操作 UI 元素。你这里有一个 XY 问题。就您当前的 XAML 和您的特定需求发布另一个问题。

标签: c# xaml windows-phone-7 user-interface


【解决方案1】:

如果您想以编程方式创建StackPanel,您可以通过“模仿”XAML 版本来实现。

例如,以下 XAML:

<StackPanel Foreground="White"
            Margin="12,0,0,0">
</StackPanel>

可以使用以下 C# 代码创建:

var stackPanel = new StackPanel();
stackPanel.Foreground = new SolidColorBrush("White");
stackPanel.Margin = new Thickness(12,0,0,0);

在不知道您的StackPanel 长什么样的情况下,我无法为您提供任何提示。


我一定想知道你为什么要这样做? XAML 通常比通过代码设计要好得多。更不用说它更干净并且可以适应 MVVM,这是您应用程序的最佳解决方案。

如果您提供更多细节,我可以提供准确的建议。

【讨论】:

  • 对...我想在我的数据透视页面应用程序中使用不同类型的堆栈面板...例如...一个包含文本和图像的堆栈面板,图像可以在文本下方,在它的右边,或在它的左边。而且我想随机执行此操作...暗示任何堆栈面板都可以随时出现(堆栈面板位于列表框中)。我可以使用 XAML 吗?我已经从 stackpanel 类创建了一个派生类,并且正在考虑动态执行它而不是使用 MVVM(通过将列表框的 itemssource 设置为我的派生类的对象列表)。
  • 另外手动编写属性设置代码也很繁琐,因为我的stackpanel有很多孩子。
  • 嗯,这当然很乏味 :D 这就是你用 XAML 编写它的原因;) 你希望你的堆栈面板有多随机?您是否有一组固定的预先生成的 StackPanel,或者您想生成全新的 StackPanel?
  • 如果你有一个有限集,你可以使用DataTemplateSelector
  • 嗯,我的设计是固定的(上面提到的面板有3种)
【解决方案2】:

当您在 XAML 中创建代码时,此 C# 中的代码不存在于您项目的任何文件中。 XAML 代码在编译过程中更改为对象。 在这里你有关于这个过程的精彩文章:

Article

您可以使用以下对象在代码后面创建 GUI:

var stackPanel = new StackPanel();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    相关资源
    最近更新 更多