
xaml的作用就是帮你简化创建UI的代码,它最终也会被转化为c#代码来执行
我们不应该用代码去修改xaml,而应该直接用代码来创建控件,所以你的问题应该是如何动态创建控件
这里有一个链接,你可以参考一下做法
http://www.cnblogs.com/chenxizhang/archive/2010/03/25/1694899.html
在WinForm项目是无法直接转换WPF项目的,只能重新做。但在WinForm中是可以使用WPF中的控件(或者由WPF创建的自定义控件)
1.新建一个winform项目;
2.在解决方案上新建一个wpf项目;
如图:
如果有如下错误,就在winform中的引用添加System.xaml的引用即可:
错误 1 类型“System.Windows.Markup.IComponentConnector”在未被引用的程序集中定义。必须添加对程序集“System.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的引用。
在winform中添加WPF项目下引用的三个程序集:PresentationCore,PrentationFramework,WindowsBase,以及wpf项目WpfApplication1的引用,如图:
在winform的Form1窗体的cs代码中添加using WpfApplication1的引用:
在winform中添加的button按钮的Click事件中New一下Wpf的窗体show出来即可显示:
private void button1_Click(object sender, EventArgs e)
{
WpfApplication1.MainWindow wpfwindow = new WpfApplication1.MainWindow()
wpfwindow.ShowDialog()
}
效果如图:
虽然XAML可以创建一个类库和模块供其它的程序使用(有点类似于用C#或者VB.NET等语言创建一个DLL程序集,供其它的程序使用)但是我们还是经常直接使用XAML来构建用户界面。
一般来说,XAML应用程序有两种类型,分别为eXPRess和installed。
Express应用程序通常宿主于一个Web浏览器中,也就是说在浏览器中以Web页面类似的形式进行呈现的。
而Installed应用程序就和传统的桌面程序非常类似,包括控制台程序和窗体程序两种形式。
由于我们在这里是以手动的方式创建一个WPF程序,所以我们无法直接使用WinFX Extensions to Visual Studio 2005提供的模板创建特定类型的XAML程序。
为此,我们要通过手动的方式创建一个特定类型的XAML应用程序,我们还要创建对应的项目文件,并在该项目文件中指定要创建的应用程序类型。
MSBuild是Vista和Visual Studio 2005中一项新的特性,伴随着Visual Studio 2005的发布,就标志着微软已经迁移到新一代的统一生成平台。
现在所有的项目都可以很轻松地通过MSBuild生成.NET程序集。更加激动人心和有益的是,在编译和生成一个应用程序时,并不需要Visual Studio 2005作为必需的支持,我们完全可以采用MSBuild生成应用程序。
假如你安装了Windows SDK的话,MSBuild也会发布到你的计算机中。
提示:假如使用Visual Studio 2005创建一个XAML应用程序的话,那么你完全不用理会MSBuild生成应用程序的具体细节。Visual Studio 2005将会自动地为该XAML程序创建一个项目文件, 而后MSBuild将按照这个项目文件指定的方式进行工作。
提示:可以通过"开始"-"所有程序"-"Microsoft Windows SDK"-"CMD"打开MSBuild控制台窗口。你可以在命令提示符中输入"msbuild /help"查看所有与MSBuild相关的命令。
MSBuild会读取一个基于xml的、扩展名为.csproj或vbcsproj的项目文件,并按照该项目文件指定的方式,生成相应的可执行程序。在项目文件中包含一系列的XML元素,我们在这里只介绍一些重要的XML元素和它们的对应设置。各个XML元素的描述如下:
Project 所有的项目文件都必需的根元素
PropertyGroup 包含一些项目属性的设置,例如我们在生成一个项目时是采用Debug方式还是Release方式。
ItemGroup 包含一系列的项目,用来指定组成该项目的代码文件或资源文件。
Import 答应你导入其它的一些项目文件,例如将一些目标文件导入到某项目文件中
我们可以有很多方式为MSBuild配置对应的项目文件,当然最便捷的方法就是直接使用Visual Studio 2005,它会自动地生成相应的项目文件。下面是一个最简单的项目文件示例,其代码如下:
01 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
02 <PropertyGroup>
03 <AssemblyName>MyFirstapplication</AssemblyName>
04 <TargetType>winexe</TargetType>
05 <Configuration>Release</Configuration>
06 <OutputPath>.\</OutputPath>
07 </PropertyGroup>
08 <ItemGroup>
09 <Reference Include="System" />
10 <Reference Include="WindowsBase" />
11 <Reference Include="PresentationCore" />
12 <Reference Include="PresentationFramework" />
13 </ItemGroup>
14 <ItemGroup>
15 <ApplicationDefinition Include="MyApp.xaml" />
16 <Page Include="Page1.xaml" />
17 </ItemGroup>
18 <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
19 <Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />
20 </Project>
上述的项目文件中,我们在第1行使用了Project元素了,并为其xmlns属性指定了命名空间。注重这个属性是必需的,而且其属性值必须为http://schemas.microsoft.com/developer/msbuild/2003。
我们在前面提及过,PropertyGroup中包含一些项目属性的设置,例如在第3行代码中,我们使用AssemblyName元素来设置MSBuild产生最终的可执行程序名,第4行代码使用TargetType元素指定生成的程序类型,我们可以在<TargetType>…</TargetType>之间设置4种不同的值,在本例中为"winexe",表明生成的目标程序类型是一个图形化程序(不是控制台程序,可以为窗体形式,也可以为浏览器形式)。假如将其值设置为"exe",则生成的是一个控制台程序。
"Library"是一个DLL程序集,"Netmodule"生成的则是一个程序集中的模块。第5行代码中的Configuration元素是一个可选项,假如想使用debug生成方式的话,可以将其设置为"debug",默认的生成方式为"Release"。
第6行代码中的OutputPath元素用来指定生成文件存放的文件夹,而本例中的".\"表示生成的文件将直接生成在根目录下。
第9到13行的<ItemGroup>…</ItemGroup>中包含4个Reference元素,在这里我们可以使用"Include"属性来语言一个动态链接库文件,而"System"、"WindowsBase"等就是这些DLL文件的名称,这些动态链接库文件中包含了WPF中所有的核心类。
第14到17行的<ItemGroup>…</ItemGroup>中,我们使用ApplicationDefinition元素的"Include"属性指定该XAML程序的应用程序定义文件为"MyApp.xaml"。
使用Page元素的"Include"属性指定该XAML程序中使用到的XAML页面文件(假如该XAML页面还包含代码后置文件的话,那么还必须使用Compile属性指定对应的代码后置文件)。
最后要注重的就是第18、19代码所使用的Import元素,该元素答应你包含其它的项目文件,其中该元素的Project属性是必选的,用来指定所要包含的项目文件。
一般情况下,我们通常使用Import元素来导入标准的目标文件,其中一个是Microsoft.WinFX.targets,另外一个则是和适当的语言相关的目标文件-Microsoft.CSharp.targets或Microsoft.VisualBasic.targets。大多数的WPF程序在生成时都需要上述两个文件中定义的目标。
对一个C#的项目来说,标准的Import语句如下:
01 <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
02 <Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />
而对一个VB.NET项目来说,标准的Import语句如下:
01 <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
02 <Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" /> QQRead.com 推出数据恢复指南教程 数据恢复指南教程 数据恢复故障解析 常用数据恢复方案 硬盘数据恢复教程 数据保护方法 数据恢复软件 专业数据恢复服务指南
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)