记录WPF绑定的stylet方法

WPF绑定

一、背景
晚上吃过饭,就溜达,恰好就看到大神同事正在新建一个WPF项目。就跟他聊个天,我说我对WPF也算了解,也能依葫芦画瓢往里搞控件搞数据,我觉得我最不会的地方是新建一个项目后,要数据绑定,绑定最开始是怎么形成的,怎么定义的,Xaml怎么找到这个类的?
大神同事呵呵一笑。这你都不会?于是开始给我直播创建新的项目。
由于我是菜鸟,每当这个时候就网上搜,或者找以前的项目依葫芦画瓢,虽说都能解决问题满足需求,但总没有系统的学习过,总之很狼狈。于是看大神操作了一波,除绑定外,还学习了公共控件ContentControl的使用。怕以后用到的时候忘记了,写这篇当作记笔记了。

二、环境
本人使用 VS2019 ; .NET Framework 4.7.2

三、过程
1.新建WPF项目。然后界面上分分栏,随便搞点东西。大概就这样

在这里插入图片描述
2.关键的一步,添加引用。管理Nuget包,添加这些东西:
在这里插入图片描述

3.刚刚添加的Stylet的作用就是把View与ViewModel进行绑定,而绑定的方法,不需要写什么代码,关键之处在于命名。View的命名一定是XXXXView,与之相应的ViewModel一定要是XXXXViewModel。例如我这里把MainWindow重命名位MainView,且要新建一个MainViewModel作为他绑定的类。(建议新建window,改名容易出现各种错误)
添加nuget包时,会出现一个pages文件夹,是一个示例,Xmal中的s引用需要复制到自己的view中。还有一个Bootstarpper类。这个类是决定启动文件的。
在这里插入图片描述
在这里插入图片描述
4.进行绑定
MainViewModel中继承 Screen类。 Screen是Sytlet中的类,作用就是根据名字找到View并进行绑定。
在这里插入图片描述
然后对刚刚建立的TextBox啊,Button啊,绑定试试。代码如下:

 public class MainViewModel : Screen
    {
        public string Word { get; set; }

        public string Figure { get; set; }

        public void Trans()
        {
            var fig = int.Parse(Figure);
            var w = "";
            switch (fig)
            {
                case 1:
                    w = "一";
                    break;
                case 2:
                    w = "二";
                    break;
                case 3:
                    w = "三";
                    break;
            }

            Word = w;
        }
    }

xaml代码:

<Window x:Class="BindingTest.MainView"
        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:BindingTest"
        xmlns:s="https://github.com/canton7/Stylet"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="3*"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
        </Grid.RowDefinitions>

        <StackPanel Grid.Row="0" Orientation="Horizontal">
            <Label Content="数字:"  FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/>
            <TextBox Text="{Binding Figure}" Width="50"  FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/>
            <Label Content="文字:" Margin="50 0 0 0"  FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/>
            <TextBox Text="{Binding Word}" Width="50"  FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/>
            <Button Content="测试" Command="{s:Action Trans}" Margin="80 0 0 0" FontSize="25" HorizontalAlignment="Center" VerticalAlignment="Center"/>
        </StackPanel>

        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Grid.Row="2">
            <Label Content="Hello World!" VerticalAlignment="Center" FontSize="40"/>
        </StackPanel>
    </Grid>
</Window>

5.进行测试
输入数字2,点击测试按钮。出现了“二”。 测试成功
在这里插入图片描述
6.结语
先写这些。要下班了。
中间那部分留着下次写contentCortol再用。
本人菜鸟,可能有写的不对或者遗漏的地方。有什么问题欢迎交流。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值