• 简单的MVVM的实例


    在Model层中建一个Person类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace TestPractice.Model
    {
        public class Person
        {
            private string name;
            public string Name
            {
                get { return name; }
                set { name = value; }
            }
    
            private string age;
            public string Age
            {
                get { return age; }
                set { age = value; }
            }
            public Person(string name, string age)
            {
                this.Name = name;
                this.Age = age;
            }
        }
    }

    在Service层中建一个IPersonInformation,IQueryService接口和PersonInformation,QueryService类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using TestPractice.Model;
    
    namespace TestPractice.Service
    {
        interface IPersonInformation
        {
            List<Person> GetPersonInformation();   
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using TestPractice.Model;
    
    namespace TestPractice.Service
    {
        public class PersonInformation:IPersonInformation
        {
            public List<Person> GetPersonInformation()
            {
                List<Person> personList = new List<Person>();
                personList.Add(new Person("张学健", "19"));
                personList.Add(new Person("李四", "20"));
                personList.Add(new Person("王五", "21"));
                personList.Add(new Person("孙红雷", "22"));
                return personList;
            }
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using TestPractice.Model;
    
    namespace TestPractice.Service
    {
        interface IQueryService
        {
            Person Searching(string up);
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using TestPractice.Model;
    
    namespace TestPractice.Service
    {
        class QueryService : IQueryService
        {
            public Person Searching(string SearchText)
            {
                PersonInformation per = new PersonInformation();
                List<Person> Members = per.GetPersonInformation();
    
                Person p= new Person("","");
    
                if (!string.IsNullOrEmpty(SearchText))
                {
                    foreach (var i in Members)
                    {
                        if (i.Name.Contains(SearchText))
                        {
                            return i;
                        }
                    }
                    
                }
                return p;
            }
        }
    }

    在ViewModel中创建一个MainWindowViewModel类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using TestPractice.Model;
    
    namespace TestPractice.Service
    {
        class QueryService : IQueryService
        {
            public Person Searching(string SearchText)
            {
                PersonInformation per = new PersonInformation();
                List<Person> Members = per.GetPersonInformation();
    
                Person p= new Person("","");
    
                if (!string.IsNullOrEmpty(SearchText))
                {
                    foreach (var i in Members)
                    {
                        if (i.Name.Contains(SearchText))
                        {
                            return i;
                        }
                    }
                    
                }
                return p;
            }
        }
    }

    在MainWindow中:

    <Window x:Class="TestPractice.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="公司人员查询系统" Height="350" Width="525"
            WindowStartupLocation="CenterScreen">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <Border BorderBrush="Black" BorderThickness="1" CornerRadius="6" Padding="2" Grid.Row="0">
            <StackPanel>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="公司人员查询系统" FontSize="20"  FontFamily="LiShu"  TextAlignment="Center" Width="517"/>
                </StackPanel>
            </StackPanel>
            </Border>
            <Border BorderBrush="Black" BorderThickness="1" CornerRadius="6" Padding="6" Grid.Row="1">
                <StackPanel>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="姓名:" FontSize="15"  FontFamily="LiShu" Height="20" />
                        <TextBox FontSize="15"  FontFamily="LiShu" Width="155" Text="{Binding SearchText,Mode=TwoWay}"/>
                    </StackPanel>
                </StackPanel>
            </Border>
            <Border BorderBrush="Black" BorderThickness="1" CornerRadius="6" Padding="6" Grid.Row="2">
                <Button Content="查询" FontSize="15" Margin="255,0,167,242" Command="{Binding SeacheringCommand}"/>
            </Border>
            <Border BorderBrush="Black" BorderThickness="1" CornerRadius="6" Padding="6" Grid.Row="3">
                <StackPanel>
                    <StackPanel Orientation="Horizontal" Height="270">
                        <TextBlock Text="姓名:" FontSize="15"  FontFamily="LiShu" Margin="10,89,0,0" Width="56" Height="31" VerticalAlignment="Top" />
                        <Label Content="{Binding P.Name,Mode=TwoWay}" FontSize="15" Width="150" Margin="0,77,0,161" RenderTransformOrigin="0.577,0.743"></Label>
                    </StackPanel>
                </StackPanel>
            </Border>
            <Border BorderBrush="Black" BorderThickness="1" CornerRadius="6" Padding="6" Grid.Row="4">
                <StackPanel>
                    <StackPanel Orientation="Horizontal" Height="270">
                        <TextBlock Text="年龄:" FontSize="15"  FontFamily="LiShu" Margin="10,164,0,75" Width="56" Height="31" RenderTransformOrigin="2.091,0.55" />
                        <Label Content="{Binding P.Age,Mode=TwoWay}" FontSize="15" Width="150" Margin="0,153,0,75" RenderTransformOrigin="0.577,0.743"></Label>
                    </StackPanel>
                </StackPanel>
            </Border>
        </Grid>
    </Window>
  • 相关阅读:
    qt.qpa.plugin Could not load the Qt platform plugin xcb
    深度学习模型在移动端的部署
    ccproxy
    Java版本
    第四篇 -- Go语言string转其他类型
    第三篇 -- Go语言其他类型转String方法
    第二篇 -- Go语言转义字符与变量声明
    第五十三篇 -- MFC美化界面2
    C++第五十二篇 -- 多线程之消息传递
    第一篇 -- Go环境的搭建以及Hello World程序编写
  • 原文地址:https://www.cnblogs.com/hushzhang/p/5899358.html
Copyright © 2020-2023  润新知