2012-07-09 51 views
0

我不熟悉wpf或C#语言,但我想生成xaml代码,它是来自概念语言模型(DSL)的cs代码,我写了很多模板来生成xaml标签和cs代码并使用MVVM将它们绑定到我的数据模型。 例如我的模板来创建CS类我的XAML文件是:C#类属于xaml文件

namespace $domain 
{ 
    /// <summary> 
    /// Interaction logic for $name.xaml 
    /// </summary> 
    public partial class $name : Window 
    { 
     public $name() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

,我的问题是: 是代码足以为我的XAML文件中的CS类这一部分? InitializeComponent方法在哪里?

,这是我的XAML模板

<Window x:Class="$domain.$name" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:vm="clr-namespace:$dmdomain" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="$title" Height="350" Width="525"> 
    <Window.DataContext> 
     <vm:$dataModel /> 
    </Window.DataContext> 
    $content 
</Window> 

回答

3

正如你所看到的,类继承Window

您可能要检查了这一点:http://en.csharp-online.net/XAML%E2%80%94Code-Behind_Class

摘录:因为当你编译你的应用程序生成的

的InitializeComponent()方法是不是在你的源代码 可见。实质上,所有InitializeComponent()都会调用 的System.Windows.Application类的LoadComponent()方法 。 LoadComponent()方法 从程序集中提取BAML(编译后的XAML),并使用它 来构建用户界面。在分析BAML时,它会创建每个控件,设置其属性并附加任何事件处理程序。

+0

感谢您的回答,这是足够用于我的xaml文件的cs代码的一部分吗? – Pooya 2012-07-09 05:38:47

+0

本质上。在您开发XAML时,您添加的组件也应该出现。 – JNF 2012-07-09 05:40:58

+0

那么它如何检测并找到我的组件来初始化它们?怎么运行的? – Pooya 2012-07-09 05:56:17