WPF 程序结构问题

问题描述

用VS2010生成WPF程序后,App.g.cs中的InitializeComponent()和MainWindow中的InitializeComponent()作用分别是什么?为什么删除App.Xaml.cs和MainWindow.Xaml.cs后程序正常启动?

解决方案

解决方案二:
wpf是严格的mvvm模式,xaml是布局呈现,.cs等代码文件是交互逻辑,而你说的InitializeComponent就是v-m之间的桥梁,它使得代码可以使用xaml的布局元素。然而xaml并不是只为wpf而生的,它是一种呈现方式,你也能把它理解为跟html是同一种东西,可以不依赖任何代码独立支持呈现过程。不妨试一下,做一个最简单的xaml文件,看看它是不是可以直接双击用ID浏览器查看,不用编译,更不用依赖wpf。比如:<Gridxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Height="990"Width="700"><BorderWidth="300"Height="300"Background="Blue"/></Grid>所以你现在知道了,为什么删掉.cs文件仍然可以运行。
解决方案三:
写错了,是IE浏览器
解决方案四:
运行xaml文档的时候,打开方式选择“WindowsPresentationFoundation主机”,这样就会自动启动IE浏览器,直接用浏览器打开应该不行。
解决方案五:
引用1楼rocmemory的回复:

wpf是严格的mvvm模式,xaml是布局呈现,.cs等代码文件是交互逻辑,而你说的InitializeComponent就是v-m之间的桥梁,它使得代码可以使用xaml的布局元素。然而xaml并不是只为wpf而生的,它是一种呈现方式,你也能把它理解为跟html是同一种东西,可以不依赖任何代码独立支持呈现过程。不妨试一下,做一个最简单的xaml文件,看看它是不是可以直接双击用ID浏览器查看,不用编译,更不用依赖wpf。比如:<Gridxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Height="990"Width="700"><BorderWidth="300"Height="300"Background="Blue"/></Grid>所以你现在知道了,为什么删掉.cs文件仍然可以运行。

感谢您的回复,不过我还是有些不明白,请教一下:1、App.g.cs中的InitializeComponent()中调用了Base.StartupUri=newSystem.Uri("MainWindow.xaml",System.UriKind.Relative);该语句的作用是什么,是加载集成到可执行文件中的MainWindow.baml吗?如果是,那么App.g.cs中的InitializeComponent()中的System.UriresourceLocater=newSystem.Uri("/WpfApplication;component/Mainwindow.xaml",System.UriKind.Relative);System.Windows.Application.LoadComponent(this,resourceLocater);两个语句作用又是什么呢?
解决方案六:
引用4楼hp8563的回复:

Quote: 引用1楼rocmemory的回复:
wpf是严格的mvvm模式,xaml是布局呈现,.cs等代码文件是交互逻辑,而你说的InitializeComponent就是v-m之间的桥梁,它使得代码可以使用xaml的布局元素。然而xaml并不是只为wpf而生的,它是一种呈现方式,你也能把它理解为跟html是同一种东西,可以不依赖任何代码独立支持呈现过程。不妨试一下,做一个最简单的xaml文件,看看它是不是可以直接双击用ID浏览器查看,不用编译,更不用依赖wpf。比如:<Gridxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Height="990"Width="700"><BorderWidth="300"Height="300"Background="Blue"/></Grid>所以你现在知道了,为什么删掉.cs文件仍然可以运行。

感谢您的回复,不过我还是有些不明白,请教一下:1、App.g.cs中的InitializeComponent()中调用了Base.StartupUri=newSystem.Uri("MainWindow.xaml",System.UriKind.Relative);该语句的作用是什么,是加载集成到可执行文件中的MainWindow.baml吗?如果是,那么App.g.cs中的InitializeComponent()中的System.UriresourceLocater=newSystem.Uri("/WpfApplication;component/Mainwindow.xaml",System.UriKind.Relative);System.Windows.Application.LoadComponent(this,resourceLocater);两个语句作用又是什么呢?

上面有一处输错:“如果是,那么App.g.cs中的”应为“如果是,那么MainWindow.g.cs中的”
解决方案七:
这两句作用分别是:关联资源、关联布局元素1、比如你在xaml中定义了一个Style<Stylex:Key="box"……那么如果想在后台代码中使用诸如“button.Style=(Style)this.Resources["box"]”的功能,就需要“关联资源”,否则后台不认识前台的box2、同样的,如果在xaml中定义了一个button<Buttonx:Name="btn"……那么如果要在后台使用btn这个名称,就需要关联布局元素也就是说,这个.g.cs文件的作用,就是让交互逻辑得以使用布局逻辑。在你面前站着几个员工,你不知道他们的名字和职务,所以无法指使他们去做什么事情,而现在我给了你一张员工名册,那么你可以了。
解决方案八:
引用1楼rocmemory的回复:

wpf是严格的mvvm模式,xaml是布局呈现,.cs等代码文件是交互逻辑,而你说的InitializeComponent就是v-m之间的桥梁,它使得代码可以使用xaml的布局元素。然而xaml并不是只为wpf而生的,它是一种呈现方式,你也能把它理解为跟html是同一种东西,可以不依赖任何代码独立支持呈现过程。不妨试一下,做一个最简单的xaml文件,看看它是不是可以直接双击用ID浏览器查看,不用编译,更不用依赖wpf。比如:<Gridxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Height="990"Width="700"><BorderWidth="300"Height="300"Background="Blue"/></Grid>所以你现在知道了,为什么删掉.cs文件仍然可以运行。

+1,+10086
解决方案九:
引用6楼rocmemory的回复:

这两句作用分别是:关联资源、关联布局元素1、比如你在xaml中定义了一个Style<Stylex:Key="box"……那么如果想在后台代码中使用诸如“button.Style=(Style)this.Resources["box"]”的功能,就需要“关联资源”,否则后台不认识前台的box2、同样的,如果在xaml中定义了一个button<Buttonx:Name="btn"……那么如果要在后台使用btn这个名称,就需要关联布局元素也就是说,这个.g.cs文件的作用,就是让交互逻辑得以使用布局逻辑。在你面前站着几个员工,你不知道他们的名字和职务,所以无法指使他们去做什么事情,而现在我给了你一张员工名册,那么你可以了。

嗯,有些明白了,您的意思是不是App.g.cs中的InitializeComponent()将资源文件中的window对象窗口呈现出来,和编码的Win.Show作用相同;而MainWindow.g.cs中的InitializeComponent()则将窗口中的对象和它们的名字关系起来?这样在后台代码中才能正常使用资源文件中的元素?此外,MainWindow.g.cs中的构造函数中的InitializeComponent()删除后,是不是会调用缺省的InitializeComponent()来关联资源布局元素?

时间: 2024-09-17 03:36:11

WPF 程序结构问题的相关文章

无线标记语言(WML)基础之WML程序结构

程序 上一节我们降解了一个简单的WML程序,具有HTML编程的读者可以看出,WML程序在结构上形式上与html程序有很多相似之处.下面我们就根据一个实例来分析一下WML程序的结构及组成. 1.WML的元素和标签 分析实例之前,我们有必要对WML的元素和标签予以简单说明.与HTML类似,WML的主要语法也是元素和标签.元素是符合DTD(文档类似定义)的文档组成部分,如title(文档标题).IMG(图像).table(表格)等等,元素名不区分大小写.WML使用标签来规定元素的属性和它在文档中的位置

PL/SQL程序结构

什么是PL/SQL程序     前面第4章学习的标准化的SQL语言对数据库进行各种操作,每次只能执行一条语句,语句以英文的分号";"为结束标识,这样使用起来很不方便,同时效率较低,这是因为Oracle数据库系统不像VB.VC这样的程序设计语言,它侧重于后台数据库的管理,因此提供的编程能力较弱,而结构化编程语言对数据库的支持能力又较弱,如果一些稍微复杂点的管理任务都要借助编程语言来实现的话,这对管理员来讲是很大的负担.    正是在这种需求的驱使下,从Oracle 6开始,Oracle公

对应用程序结构进行组织的程序示例

上面我们介绍了对应用程序结构进行组织的方法,接下来我们举一个综合应用的例子.程序实现的功能非常简单,但其中用到了我们讲解的各方面的知识.在程序中,我们利用名字空间把应用程序功能进行分割,并且用到了在一个名字空间中包含多个类.在一个可执行文件中调用多个动态链接库的方法.程序中还用到了异常处理.类的继承.派生类对虚方法的重载.多态性的实现等概念,希望读者能够在阅读程序时认真注意这些用法,来加深对基本概念的理解. 该程序是一个小游戏,游戏中随机产生矩形.正方形.直角三角形.等腰直角三角形四种图形.游戏

Oracle学习(八) PL/SQL简介,基本程序结构和语句

1.变量 2.常量 3.基本程序结构和语句 PL/SQL能够驻留在Oracle数据库服务器和Oracle开发工具两个环境中.在这两个环境中,PL/SQL引擎 接受任何PL/SQL块和子程序作为输入,引擎执行过程语句将SQL语句发送给Oracle服务器的SQL语句执行 器执行. 1.PL/SQL变量 (1)变量的声明: 变量通常是在PL/SQL块的声明部分定义的,每一个变量都有一个特定的类型. 变量定义的基本格式为: <变量名> <数据类型>[(宽度):=<初始值>] 如

代码-新手求问wpf程序中关于路由事件的问题

问题描述 新手求问wpf程序中关于路由事件的问题 我放了两个Button控件 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Grid1.AddHandler(Button.ClickEvent,new RoutedEventHandler(onClick)); } public void onClick(object sender, RoutedEventArgs e

wpf程序,由于引用了Viewport3D、Viewport2DVisual3D和灯光等,导致在运行过程中,偶尔出现Dwrite.dll底层报错

问题描述 是这样的,我的wpf程序,界面有一个圆柱模型,图片在模型旋转,程序运行过程中,设置电脑分辨率,造成无法捕捉的crash:错误应用程序名称:MyWard.vshost.exe,版本:12.0.30723.0,时间戳:0x53cf4fe5错误模块名称:dwrite.dll,版本:6.1.7601.17514,时间戳:0x4ce7b817异常代码:0xc0000005错误偏移量:0x0005d318错误进程ID:0x17e8错误应用程序启动时间:0x01d1cb65b64eacf1错误应用程

关于WPF程序在win7系统下不能打印控件的问题

问题描述 RT,最近到客户现场实施发现WPF程序在win7系统下打印控件为空,也就是打印机打印出来的是白纸,啥都没有,在win8系统下可以打印内容,有人遇到过这个问题么? 解决方案 解决方案二:没遇到过.你可以试试写一个最简单的wpf程序,为用户更新一下打印机驱动,或者给打印机换墨.难道你的wpf程序在开发测试中就从来没有在win7下测试过,跑到用户那里测试么?解决方案三:如果你们的程序在公司和别的用户那里在win7系统下已经测试过,作为一个技术服务人员,应该想到的是有问题的那个范围的东西,纠结

wpf-kinect写的WPF程序是否可以加个“皮肤”?

问题描述 kinect写的WPF程序是否可以加个"皮肤"? 用C#写了个Kinect姿势识别的程序,觉得显示火柴棍不太好看,想加个皮肤,有没有大神能指个路啊~~~关键字什么的 试过Unity3D,觉得太小题大做了.所以就想知道能不能直接在WPF的基础上做个2D的出来.

c语言-C语言,程序结构 程序不能正常运行

问题描述 C语言,程序结构 程序不能正常运行 #include #include #define num 100 #define OK 1 typedef int Status; typedef char DataType; typedef struct node { DataType data; struct node *lchild,*rchild; }BinTNode,*BinTree; int found; BinTNode *p; /*****************建立二叉树****