WPF 入门笔记之基础

一、创建WPF程序

1. App.xaml 相当于窗体的配置文件

2. xmlns:xml名称空间的缩写

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"<!--表示引入一组名称空间,presentation主要加载绘制界面相关的-->

3. xmlns:x:多个x表示名称空间的名字

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"<!--xaml编译和解析文件相关的。WPF默认可以有一个没有名称的名称空间.(默认名称空间)-->

4. x:Class="MyWpfApp.MainWindow" 对应的是,这个xmal文件对应的xmal.cs文件中的MainWindow类

x:Class="MyWpfApp.MainWindow"<!--对应的是,这个xmal文件对应的xmal.cs文件中的MainWindow类-->

二、用户界面和赋值

1. 树形结构布局,引用自己的类

xmlns:local="clr-namespace:MyWpfApp"<!--引用当前的名称空间-->
namespace MyWpfApp
{
    public class CurrentData
    {
        public CurrentData Data { get; set; }

        public string Name { get; set; }
    }
}

在XAML中使用

<Window.Resources>
     <local:CurrentData x:Key="test" Name=""/>
</Window.Resources>

2. Attribute=“Value”方式只能使用简单的字符串赋值,赋值的类型赋值不方便

<Grid>
   <Rectangle Height="80" Width="100" Stroke="Black"/>
</Grid>

2.1 非字符串类型赋值

<Window.Resources>
      <local:CurrentData x:Key="text" Name="t" Data="aaa" />
</Window.Resources>

首选创建一个配,继承于TypeConverter类来自于(System.ComponentModel),重写ConverterFrom 方法

第二用属性的形式标记在自定义类上

    //第二步
[TypeConverterAttribute(typeof(NameToDataTypeConverter))] public class CurrentData { public CurrentData Data { get; set; } public string Name { get; set; } } //第一步 public class NameToDataTypeConverter : TypeConverter { public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { string name = value.ToString(); CurrentData data = new CurrentData() { Name = name }; return data; } }

3. 属性方式赋值,例如button

<Grid>
        <!--这种用‘/’直接结尾的,叫做空标签。这个标签不具有内容-->
        <Button Height="80" Width="200" Click="Button_Click1" />
        <Button Height="80" Width="200" Click="Button_Click">
            <!--标签的内容-->
            <Button.Content>
                <!--属性的方式赋值-->
                <Rectangle Width="20" Height="20" Stroke="Black" Fill="Green"></Rectangle>
            </Button.Content>
        </Button>
</Grid>

4. 标签扩展的方式赋值

    <Window.Resources>
        <sys:String x:Key="stringvalue">string value</sys:String>
    </Window.Resources>
    <Grid>
        <!--{}大括号表示使用标签扩展-->
        <TextBlock Height="100" Text="{StaticResource ResourceKey=stringvalue}"></TextBlock>
    </Grid>

三、事件处理器,代码后置,导入程序集和引用命名空间

1.事件基本模型

    <Grid>
        <Button Height="20" Name="button" Width="200" Content="button" Click="Button_Click"></Button>
    </Grid>
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("");
        }
    }
<Button>:事件的拥有者.
Click="Button_Click":事件订阅
MainWindow:窗体是事件的响应者
private void Button_Click(object sender, RoutedEventArgs e):事件的处理器

 事件的订阅可以用C#代码实现

        public MainWindow()
        {
            InitializeComponent();
            this.button.Click += Button_Click;
        }

2. 导入程序集和引用其中的名称空间 

 

posted @ 2018-04-19 14:26  浩叔  阅读(232)  评论(0编辑  收藏  举报