doubleyong
管理员
管理员
  • 最后登录2025-10-18
  • 发帖数1198
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
阅读:7928回复:0

WPF的相关知识点总结

楼主#
更多 发布于:2016-06-01 10:59

如何为WPF添加Main()函数
参考:http://www.cnblogs.com/sunxf2011/archive/2011/12/12/2285071.html





WPF关闭应用程序方法
http://www.cnblogs.com/ZetaChow/archive/2010/05/17/2237338.html

    Windows1.xaml.cs文件(部分):
     private void btn_Exits_Click(object sender, RoutedEventArgs e)
        {
            Application.Current.Shutdown();
        }



WPF下怎么让控件大小跟着窗口的大小变化而变化?

如果在XAML里设置:

设置控件的 HorizontalAlignment="Stretch",VerticalAlignment="Stretch",
且不要显式设置控件的Width和Height属性.


如果是在代码里设置:

Button btn = new Button();
btn.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
btn.VerticalAlignment = System.Windows.VerticalAlignment.Stretch;


wpf怎样实现在绑定表达式前加默认字符串

<TextBlock Text="{Binding ElementName=textBlock1,Path=Text,StringFormat=c:\\{0}}" Background="Red" Width="100" Height="100"/>

参考地址:http://zhidao.baidu.com/link?url=u6hNAXaLxOYEcBIViascG2fgPRorVYQyN9eULCiVyNCKihlqUGJmCBOZWtp6KS8DtdrE9GN-xDwzL5gM0XiY5_



WPF:很不给力的WebBrowser.NavigateToString

webBrowser.NavigateToString("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"></head><body>刘</body></html>");

参考地址:http://www.mgenware.com/blog/?p=295



VS2010安装项目的系统必备中添加.NET 2.0 与.NET 3.5

VS2010安装项目的系统必备中没有.NET 2.0,但可以从VS2008的程序文件中找到 .NET 2.0 的系统必备安装包。    安装了VS2008 的 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages 下的 DotNetFX 文件夹,就是 .NET 2.0 的系统必备安装包。
  把 DotNetFX 文件夹复制到安装了 VS2010 的 C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages下,然后在VS2010中就可以选择
  .NET 2.0 的系统必备了。
.NET 3.5 添加同样操作
参考地址:http://blog.csdn.net/cjh200102/article/details/7558107




WPF LinkLabel 控件

下载地址:Themed Controls Library
参考文档:http://www.blagoev.com/Blog/post/Building-a-WPF-LinkLabel-control.aspx


wpf hyperlink 隐藏下划线
< Style TargetType ="Hyperlink" >
                
< Setter Property ="Foreground" Value ="#209AC2" />
                
<!-- 清除文字修饰(去掉下划线) -->
                
< Setter Property ="TextBlock.TextDecorations" Value =" {x:Null} " />
                
< Style.Triggers >
                    
< Trigger Property ="IsMouseOver" Value ="True" >
                        
< Setter Property ="Foreground" Value ="#F27D00" />
                        
<!-- 在鼠标悬停时显示下划线 -->
                        
< Setter Property ="TextBlock.TextDecorations" >
                            
< Setter.Value >
                                
< TextDecorationCollection >
                                    
< TextDecoration Location ="Underline" />
                                
</ TextDecorationCollection >
                            
</ Setter.Value >
                        
</ Setter >
                    
</ Trigger >
                
</ Style.Triggers >
            
</ Style >

DEMO:http://www.cnblogs.com/hiyz/archive/2012/07/07/2580315.html
1. WPF学习之控件与布局
GUI是程序界面的优胜者,在Windows上实现图形用户界面有很多种方法,每种方法又都有自己的一套开发理念和工具。每种GUI开发方法与它的理念和工具共同组成了一种方法论,常见的有:[方法论=方法+理念+工具]
  • Windows API(Win API):调用Windows的底层绘图函数,使用C语言,最原始也是最基础的。
  • Microsoft Foundition Class(MFC):使用C++语言将最原始的Win32 API封装成控件类。
  • Visual Component Library(VCL):Delphi和C++ Builder使用的与MFC相近的控件类库。
  • Visual Basic+ActiveX(VB6):使用组件化的思想把Win32 API封装成控件,以期与多种语言共用。
  • Java Swing/AWT:Java SDK中用于跨平台开发的控件类库。
  • Windows Form:.NET平台上用于开发GUI的老牌劲旅,完全组件化,但是需要.net运行时支持。
  • Windows Presentation Foundition(WPF):后起之秀,使用全新的数据驱动UI理念。
纵览Windows GUI开发历程,这些方法论可以分为4代:
  • Win API时代:函数调用+消息处理。
  • 封装时代:使用面向对象理念将Win API封装成类,由来自UI的消息驱动程序处理数据。
  • 组件化时代:使用面向组件理念在类的基础上分装成组件;消息被封装成了事件。变成事件驱动。
  • WPF时代:在组件的基础上,使用专门的UI设计语言并引入数据驱动UI的理念。
小结:
形而上者谓之道,形而下者谓之器。本次讲解主要是将WPF内部运行机理。可以说是WPF之“道”,然而如果没有动手写程序这个“器”,何以载道?

2. WPF之Binding深入探讨

程序的本质是数据+算法。数据会在存储、逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要。但算法在3层中的分布是不均匀的,对于一个3层结构的程序来说,算法一般分布在这几处:
A。数据库内部。
B。读取和写回数据。
C。业务逻辑。
D。数据展示。
E。界面与逻辑的交互。


如果把Binding比作数据的桥梁,那么它的两端分别是源(Source)和目标(Target)。数据丛哪里来哪里就是源,到哪里去哪里就是目标。一般情况下,Binding的源是业务逻辑层的对象,Binding的目标是UI层的控件对象。这样数据就会源源不断的通过Binding送达UI界面,被UI层展现,这就完成了数据驱动UI的过程。有了这座桥梁,我们不仅可以控制车辆在源与目标之间是双向通行还是单向通行。还可以控制数据的放行时机,甚至可以在桥上搭建一些关卡用来转换数据类型或者检验数据的正确性。
通过对Binding有了一个基本概念之后,让我们看一个最基本的例子。这个例子是创建一个简单的数据源并通过Binding把它连接到UI元素上。

注意:
顺便提一句,Binding还具有NotifyOnSourceUpdated属性和NotifyOnTargetUpdated两个bool类型是属性。如果设置为True,则在源或目标被更新以后就会触发相应的SourceUpdated事件和TargetUpdated事件。实际工作中我们可以监听这两个事件来找出来哪些数据或控件被更新了。"没有Path"的Binding
有的时候我们会在代码中我们看大Path是一个“.”或者干脆没有Path的Binding,着实让人摸不着头脑。原来这是一种比较特殊的情况---Binding源本身就是一种数据且不需要Path来指明。典型的string,int等基本类型都是这样,他们是实例本身就是数据,我们无法指定通过那个属性来访问这个数据,这是我们只需要将这个数据设置为.就可以了。在XAML中这个.可以忽略不写,但是在C#中编程必须要带上。下面请看下面这段代码:

[html] view plaincopyprint?
  1. <TextBlock Height="23" Name="textBlock1" Text="{Binding Source={StaticResource ResourceKey=myString}}" />  

注意:
最后这种简写很容易被误解为没有指定Path,其实只是省略掉了。与只等效的C#代码如下:
[csharp] view plaincopyprint?
  1. string myString = "菩提本无树,明镜亦无台。本来无一物,何处染尘埃。";  
  2.           this.textBlock1.SetBinding(TextBlock.TextProperty, new Binding(".") { Source=myString});  

注意:
最后顺便带一句,PropertyPath除了用于Binding的Path属性之外,在动画编程的时候也会派上用场(Storyboard.TargetProperty)。在用于动画编程的时候,PropertyPath还有另外一种语法,到时候我们细说。

最新喜欢:

sunshinesunshi...
知识需要管理,知识需要分享
游客


返回顶部

公众号

公众号