深入浅出WPF 学习笔记一

本文介绍了C++程序员转战C#和WPF的原因,重点讲解了XAML在界面设计中的作用,包括Properties、XAML元素如Rectangle和TextBlock的使用,以及控件与布局的概念,如GroupBox、ItemsControl和不同布局策略如Canvas、DockPanel和WrapPanel的应用。
摘要由CSDN通过智能技术生成

C++程序员为什么要学习C#?

作为一个C++开发程序员,我其实是不太喜欢C#和界面相关的东西的,不过后来想清楚了,任何语言都是为了解决问题,现在工作中,遇到的问题必须要通过C#和WPF来解决,既然逃不过,那不如深度学习,况且程序员就是要有终身学习的态度。享受C#,享受WPF,嗯。

XAML

XAML = HTML+CSS+JavaScript。WPF中专门用来设计UI的语言。
源码文件结构树

  • Properties:资源和配置信息。
  • 引用:References:引用的其他项目。
  • App.xaml:程序主体,声明主窗体是哪个。
  • MainWindow.xaml:主窗体。

Attribute主要对应标签特征,Property主要对应类属性。
WPF基本类库包含了VisualTreeHelper和LogicalTreeHelper两个助手类,方便寻找当前节点的父子节点等操作。
Brush的派生类
书里面提供的线性渐变的图,还可以。

<Rectangle x:Name="rectangle" Width="200" Height="120">
            <Rectangle.Fill>
                <LinearGradientBrush>
                    <LinearGradientBrush.GradientStops>
                        <GradientStopCollection>
                            <GradientStop Offset="0.2" Color="LightBlue"></GradientStop>
                            <GradientStop Offset="0.7" Color="Blue"></GradientStop>
                            <GradientStop Offset="1.0" Color="DarkBlue"></GradientStop>
                        </GradientStopCollection>
                    </LinearGradientBrush.GradientStops>
                </LinearGradientBrush>
            </Rectangle.Fill>
</Rectangle>

x:Name x:Key

  • 所有的WPF控件都有Name属性,没有Name属性的一般就要用x:Name,正常都会用x:Name。
  • x:FieldModifier:用来改变引用变量的访问级别,正常是internal,可以改为public,有需要的时候用。
  • x:Key给资源添加索引。
  • x:Shared 只有false和true两种属性,配合x:Key来使用,用来设定每次检索到的对象是否是同一个对象,默认是true。
  • FindResource:调用一个包含Resources属性的对象的FindResource方法可以在它的资源字典里面检索资源。检索到资源以后再把它恢复成正确的数据类型就可以了。

在xaml中定义的文本和按钮

 <Window x:Class="MyFirstWpfApplication.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:MyFirstWpfApplication"
        xmlns:sys ="clr-namespace:System;assembly=mscorlib"
        mc:Ignorable="d"
        Title="Window1" Height="450" Width="800">
    <Window.Resources>
        <sys:String x:Key="myString"> Hello WPF!</sys:String>
    </Window.Resources>
    <Grid>
        <StackPanel>
            <TextBox Text="{StaticResource ResourceKey=myString}" Margin="5"></TextBox>
            <TextBox x:Name="textBox1" Margin="5"/>
            <Button Content="Show" Margin="5" Click="Button_Click"/>
        </StackPanel>
        
    </Grid>
</Window>

xaml.cs中定义的FindResource

		private void Button_Click(object sender, RoutedEventArgs e)
        {
            String str = this.FindResource("myString") as string;
            this.textBox1.Text = str;
        }
  • x:Type:在xaml中想表达某个数据类型时,使用x:Type标记扩展。
  • 自定义窗体来实现对UserWindowType类型的扩展。只需要在xaml中更换UserWindowType的值就可以了。
  • 黄金分割比大概是长宽比为5:3。
  • x:Array的作用是是通过它的Items属性向使用者暴露一个类型已知的ArrayList实例,向一个ListBox提供数据。
  • 在一个类中定义一个字段时直接给它赋值,但是定义一个属性的时候,会给它设置get和set方法。
    字段和属性

控件与布局

  • WPF是数据驱动UI,数据是核心,是主动的。
  • GroupBoix:带Header的控件。
  • ItemsControl族控件:自动使用条目容器提交给它的容器进行包装,一般都是一个集合。集合拿到以后,处理问题的时候直接去处理集合本身即可。下面这几个好好留着吧,总有用到的一天。
    在这里插入图片描述
  • TextBlock,不能编辑,静态文本,内容属性是Inlines。
  • TextBox,允许编辑,只显示简单字符串,内容属性是text。
  • Canvas:内部元素可以用像素单位进行绝对坐标定位。
  • DockPanel内的最后一个元素会把DockPanel内部的所有剩余空间占满。
  • 要想实现一个可拖拽的分隔栏,只能使用Grid和GridSplitter来实现这个功能。
  • WrapPanel使用流式布局,排不下的控件会另起一行或一列,重新排布。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值