WPF和Winform是可以进行互 *** 作的,需要首先引用WindowsFormsIntegrationdll文件,在xaml中添加命名空间:
xmlns:my="clr-namespace:SystemWindowsFormsIntegrationassembly=WindowsFormsIntegration"完整示例:
<Window x:Class="WPFApplicationWindow1"xmlns=";
其中xmlns:winforms=…为导入命名空间和程序集名称
<Grid>中的标记为winform用户控件
先加一个命名空间,然后用命名空间引用。xmlns:ctl="clr-namespace:SystemDiagnostics;assembly=WindowsBase"//你的命名空间和assembly的名称。一般来说intellisence会给你提示C#和Java和不少相似之处,一般认为比Java稍难一点。会Java,再稍花点时间就成了——毕竟初学的时候并不需要成为语言专家,边用边学也不错。
至于WPF并不是非得用C#,用VBnet啥的也成。准确地说WPF是net的一部分而不是C#的一部分——但通常使用C#来编写后台代码,用XAML语言来定义前台界面(包含一些特效)。
Xaml的本质是Xml,Xaml的命名空间被挂接(或者说映射)到net命名空间,这种映射并不完全是一对一的,Xaml中的元素则被映射到net类。所以,在Xaml中定义:
<Button Name="BtnOK" Height="24" Width="72">
<Rectangle Fill="Black" Height="16" Width="16"/>
</Button>
从效果上来看,相当于在C#代码中:
Button BtnOK=new Button(){Height=24,Width=72};
BtnOKContent=new Rectangle(){Fill="BrushesBlack",Height=16,Width=16};
实际上,能用Xaml定义的元素,也可以使用C#代码来实现。但用Xaml定义可以实现“界面与代码分离”。如果搞过ASPnet应该很容易理解“界面与代码分离”有什么好处。
所以,WPF需要的基础主要是两样:C#、XML(入门阶段对Xml的知识储备要求并不高)。
但是,WPF的学习曲线比较陡也是事实。所以,找本好教材吧(考虑到银子,先看看电子版较好)。百度知道里有不少推荐。
starj1说的“所有的控件都可以重写”其实是挺有道理——WPF确实比WinForm自由得多——但相应地,理解起来就会比较费事,得花点力气。只是熟练之后,改造出自己的控件比WinForm也方便多了。而且WPF封装了DirectX,更容易利用显卡,在做出绚丽的效果时,运行性能更好些。由于WPF在首次启动时较慢,因此过小的超微型项目个人认为不宜使用WPF来实现。
另外,WPF主要是用来取代WinForm做界面,但它并不能取代一切。我也遇到过这种情况,应该是页面设计出现问题,有个gcs 的文件,你看下这个文件中注册的Datepicker的Name和你xaml页中Datepicker的Name是否一致,还不行的话,新增一个页面吧。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)