XAML、SelverLight、WPF和WinPhone总述

XAML是Silverlight、windowsphone和WPF的基础,它将界面和后台尽量分开,界面由各种布局控件、内容控件和资源(图片、动画等)展示,通过各个控件的Attibute(对应面向对象的Property)和Style进一步优化;然后用binding的方式将数据和控件进行绑定。Silverlight是WPF在Web端的应用windowsphone开发是基于Silverlight的。

首先:

XAML主要布局控件是Grid、Canvas和StackPanel,还有DockPanel和WrapPanel用的少

Grid是网格布局;Canvas类似是web开发中的form,是绝对定位的(left和top属性决定位置);StackPanel有横向和竖向两种,StackPanel节点中的控件按照方向依次排开,一般只用于局部定位。

其次:

主要内容控件:

ContentControl族,包括Button,CheckBox等

HeaderdContentControl族

ItemsControl族

HeaderdItemsControl族

DecoratorControl族

TextBlock和TextBox:TextBox不说了,TextBlock就是Lable

ShapeControl族

PanelControl族

最后:

控件的数据绑定

1、通过Binding实例绑定

Binding b=new Binding();
b.Source=stu;//stu是一个实例化的类
b.Path=new PropertyPath("Name");//使用的是stu.Name属性
BingdingOperations.SetBinding(TextBox控件,TextBox控件.TextProperty,b);

2、属性设置

texteBox1.SetBinding(TexteBox.TextProperty,new Binding("Value",ElementName="controlname"));
3、XAML控件中直接指明
<Textbox Text="{Binding Path=Value,ElementName=controlname}"/>//ElementName是同页面的其他控件,引用的值是ElementName的Value值 
注:当绑定的源是个字符串的话,Path=.或者省略Path
例子:
<StackPanel x:Name="TitlePanel" Grid.ColumnSpan="3">  
            <StackPanel.Resources>  
                <sys:String x:Key="post">  
                    一首诗  
                </sys:String>  
            </StackPanel.Resources>  
            <TextBlock x:Name="ApplicationTitle" Text="{Binding Path=., Source={StaticResource ResourceKey=post}}"  
4、Binding数据库

最简单的数据展示: 

listbox.DisplayMemberPath="Name";  
listbox.ItemsSource=dt.DefaultView;  

在WPF中可以用ListView控件在XAML中展示 ,ListView继承于ListBox。

首先后台要设置ListView..ItemsSource=dt.DefaultView;

<ListView>
<ListView.View>
<GridView.View>
<GridViewColumn DisplayMemberBinding={Binding Id} />//Id是数据表中的字段
</GridView.View>
</ListView.View>
</ListView>
5、数据绑定校验和转换
用验证类进行校验,例如RangeValidation,然后Bingding.ValidationRules.Add(RangeValidation);
通过继承接口IValueConvert以及实现两个方法Convert(数据从数据源转到控件)和ConvertBack(数据从数据源转到控件),
例如:

<Image Source="{Binding Path=., Converter={StaticResource cts}}"/>//cts要在资源标签下声明,
<StackPanel x:Name="TitlePanel" Grid.ColumnSpan="3">  
            <StackPanel.Resources>  
                <local CategorySource x:Key="cts"/>  
            </StackPanel.Resources>  
            <Image Source="{Binding Path=., Converter={StaticResource cts}}}"/>
其中CategorySource是实现IValueConvert接口的类
6、绘图  
绘图类:Line(直线)、Rectangle(矩形)、Ellipse(椭圆)、Polygon(多变形,闭合区域)、PolyLine(多边形,不闭合)和Path(很牛逼,直线、圆弧、曲线自由组合)
图的效果:用BitmapEffect或者Effect控制,例如

<Button>  
                <Button.BitmapEffect>  
                    <DropShadowBitmapeEffect></DropShadowBitmapeEffect>  
                </Button.BitmapEffect>  
</Button>//其中DropShadowBitmapeEffect是一种绘图的效果

图的变形:类似<Button.BitmapEffect>,Button.BitmapEffect换成Button.RenderTransform

图的填充:有SolidColorBrush(实线填充),LinearGradientBrush(渐变填充),RadicGradiendBrush(放射性渐变填充)和ImageBrush(图片填充)四种。

几何图形:LineGeometry,RectangleGeometry,EllipseGeometry,GeometryGroup,PathGeometry,和Shape命名空间下的Line类的区别在于,集合图形用的是起始坐标点完成绘制。

7、动画

绘画所有动画都源于类TimeLine,一个控件的动画用类AnimationTimeLine实现,多个控件的写作动画由StoryBoard实现

8、事件

WPF的事件响应和javascript一样,都是子控件触发事件后,会逐级递送至各级父控件。

如果需要父控件捕捉子控件的事件,需要事件路由。

parentControl.AddHandle(Button.ClickEvent,new RoutedEventHandle(sonControlClick);//Button.ClickEvent是需要路由的事件类型,sonControlClick是具体需要路由的子控件事件






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值