现在的位置: 首页 > 综合 > 正文

用C#精通WPF 2010② (开发工具和XAML)

2013年06月07日 ⁄ 综合 ⁄ 共 2145字 ⁄ 字号 评论关闭

这是本人(QFord@QQ.COM)根据兴趣编写,不保证内容的完整性和准确性,并请勿用于任何商业用途。

 

1:很好的界面与代码分离技术(你懂的)

这里介绍一款不错的界面开发辅助工具:Expression Blend 很适合界面设计师使用

IDE当然是使用VS 2010了。

2:XAML(希望你有XML的基础)

就是用来标记各种.NET控件、布局等的标记语言(这里仅仅针对WPF来介绍XAML,其实它的概念可比WPF大多了),很类似web界面中的html

这个是WPF的精华(虽然WPF不一定要依赖XAML),建议深入学习

①:XAML的每个元素都映射到一个.NET类,元素名称和类名对应。

3:一个例子

1  <Window x:Class="WindowsApplication1.Window1"
2      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4      Title="Window1" Height="300" Width="300">
5      
6      <Grid>      
7      </Grid>
8  </Window>

这是一个VS2010生成的XAML文档,你可以通过新建WPF程序来得到它。

<Window>标记是顶级元素,这只能有一个,其他东东都被包含在其中。

第三行xmlns定义了名空间,关于名空间的作用请自行查阅相关资料。

Heidth=“300”  这个不言自明了吧。

 xmlns:x的x是名空间映射后的缩写形式,这样引用起来就方便多了。上面那个没有映射任何东东就代表是默认名空间。就是说每个使用的元素如果没有指定名空间就是使用这个默认的名空间。

这里要特别注意的是300的单位不是传统使用的像素,WPF使用的是与 设备无关的单位。

就是说在系统默认DPI设置成96的情况下,300就是300个像素。

这个解释起来就费劲了,请查阅MSDN吧。

 

4:
<TextBox Name="txtAnswer" Foreground="Red">
           很简单的一个例子
 </TextBox>
----------------<br />上面的XAML标记搞了一个文本框,并设置其中的字体为红色
不知道你注意到了没有,这里设置了一个属性值是使用Red,这是一个字符串类型的值
这里通过 类型转换(Type Converters) 技术 来实现的,因为Foreground接受的是Brush类型的值
像上面这种直接放在TextBox中标记的属性,如Foreground叫做 简单属性
当然还有复杂属性了,这在下面描述。

 

5:复杂属性
显然,简单属性是满足不了需求的,这里的例子是给Grid一个渐变色的背景
<Grid Name="grid1">
  <Grid.Background>
    <LinearGradientBrush>
      <LinearGradientBrush.GradientStops>
        <GradientStop Offset="0.00" Color="Red" />
        <GradientStop Offset="0.50" Color="Indigo" />
        <GradientStop Offset="1.00" Color="Violet" />
      </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
  </Grid.Background>
  ...
</Grid>

 

6:上面的例子是使用XAML标签的形式,其实这些都可以使用代码来完成,请看下面的代码:
LinearGradientBrush brush = new LinearGradientBrush();
 
GradientStop gradientStop1 = new GradientStop();
gradientStop1.Offset = 0;
gradientStop1.Color = Colors.Red;
brush.GradientStops.Add(gradientStop1);
 
GradientStop gradientStop2 = new GradientStop();
gradientStop2.Offset = 0.5;
gradientStop2.Color = Colors.Indigo;
brush.GradientStops.Add(gradientStop2);
 
GradientStop gradientStop3 = new GradientStop();
gradientStop3.Offset = 1;
gradientStop3.Color = Colors.Violet;
brush.GradientStops.Add(gradientStop3);
 
grid1.Background = brush;

 

更多关于XAML的信息请参见微软的MSDN:

http://msdn.microsoft.com/en-us/library/ms752059.aspx

抱歉!评论已关闭.