当前位置: 首页 > wzjs >正文

工业设计网站下载建设厅特种作业证件查询官网

工业设计网站下载,建设厅特种作业证件查询官网,境外网站网站有哪些,网站开发打赏功能11-10 【重构】创建视图模型,显示客户列表 正式进入 MVVM 架构的代码实战。在之前的课程中, Model 和 View 这部分的代码重构实际上已经完成了。 Model 就是在 Models 文件夹中看到的两个文件, Customer 和 Appointment。 而 View 则是所有与…

11-10 【重构】创建视图模型,显示客户列表

正式进入 MVVM 架构的代码实战。在之前的课程中, Model 和 View 这部分的代码重构实际上已经完成了。 Model 就是在 Models 文件夹中看到的两个文件, Customer 和 Appointment。 而 View 则是所有与 UI相关的 xaml 页面。接下来,我们将会把主要精力集中在 ViewModel 视图模型的实现上,并通过视图模型来绑定 UI 界面与数据模型。

右击“WPF_CMS”项目,新建一文件夹 ViewModels 。根据 MVVM 的设计原则,理论上,每一个页面都会对应一个 ViewModel。 而我们只有这个 MainWindow.xaml 页面,所以我们给这个 MainWindow 创建视图模型,新建文件 MainViewModel.cs。

左侧导航栏的客户列表,对应 Customer 客户模型,封装为 List<Customer>类型并初始化为空列表。
接下来我们需要从数据库中获得数据,创建方法, LoadCustomers,为了获取到更多的数据,我们可以使用一个 Include 语句,把预约列表也一起装进来。
--\ViewModels\MainViewModel.cs

public List<Customer> Customers { get; set; } = new();

public void LoadCustomers()
{
    using (var db = new AppDbContext())
    {
        Customers = db.Customers.Include(c => c.Appointments).ToList();
    }
}

现在我们就可以在主界面中使用这个视图模型了。
首先声明一个私有的视图模型 _viewModel,类型为 MainViewModel.。
第二步,在 MainWindow 的构造方法中,初始化这个视图模型。
第三步,向这个视图模型中加载数据。调用 LoadCustomers 这个方法,现在客户数据就从数据库中加载到客户列表了。
最后一步也是最重要的,我们需要把视图模型绑定在页面的数据上下文中,使用 DataContext, 让它等于 _viewModel。

--\MainWindow.xaml.cs

public partial class MainWindow : Window
{
    private MainViewModel _viewModel;
    public MainWindow()
    {
        InitializeComponent();
        _viewModel = new MainViewModel();

        _viewModel.LoadCustomers();

        DataContext = _viewModel;
    }
    ……
}


MainWindow.xaml 页面中,再进行相应的绑定
--\MainWindow.xaml
<ListView ItemsSource="{Binding Customers, Mode=OneWay}" DisplayMemberPath="Name" />


11-11 【实战】双向绑定,选择客户

接下来,我们还需要选择客户,并且在客户的详情页面中显示,甚至更改当前的客户信息。对于选择客户的过程我们同样可以通过视图模型来完成,但这次我们不但需要显示当前的客户选择,还需要通过 UI 的变化来操纵选择数据。所以对于客户选择来说,视图模型的绑定是双向的。

--\ViewModels\MainViewModel.cs
添加一个新的数据,用来对应当前的选择客户

private Customer _selectedCustomer;
public Customer SelectedCustomer
{
    get => _selectedCustomer; 
    set
    {
        if (value != _selectedCustomer)
        {
            _selectedCustomer = value;
        }
    }
}

OK,视图模型我们处理完毕,其实就是配置了选择客户的数据读取和操作的方法。
--\MainWindow.xaml
接下来回到 xaml 文件,给客户列表 ListView 绑定一个 SelectedItem 属性。
<ListView ItemsSource="{Binding Customers, Mode=OneWay}" DisplayMemberPath="Name" SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}" />


接下来我们还需要更新客户的详情,以及客户的预约列表的 UI。
这里我们不仅需要显示客户的数据,还需要处理客户数据的更新。所以绑定同样也是双向的,Mode=TwoWay。
我们希望在更改客户名称的时候,客户名称可以同步反映在客户列表中,使用 UpdateSourceTrigger=PropertyChanged。
<StackPanel Grid.Row="1" Grid.Column="1">
    <TextBlock Text="姓名" Margin="10 10 10 0"/>
    <TextBox Margin="10" Text="{Binding SelectedCustomer.Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
    <TextBlock Text="身份证" Margin="10 10 10 0"/>
    <TextBox Margin="10" Text="{Binding SelectedCustomer.IdNnumber, Mode=TwoWay}" />
    <TextBlock Text="地址" Margin="10 10 10 0"/>
    <TextBox Margin="10" Text="{Binding SelectedCustomer.Address, Mode=TwoWay}" />
    <Button Content="保存" Margin="10 10 10 30" VerticalAlignment="Bottom" HorizontalAlignment="Left" />
</StackPanel>

<StackPanel Grid.Row="1" Grid.Column="2">
    <ListView ItemsSource="{Binding SelectedCustomer.Appointments, Mode=TwoWay}" />
    <TextBlock Text="添加新预约" />
    <DatePicker Margin="10" />
    <Button Content="预约" />
</StackPanel>


 


文章转载自:

http://1zkIFYQG.fwbLh.cn
http://dAdHIls9.fwbLh.cn
http://Kb5LTxG3.fwbLh.cn
http://ZshAfyDQ.fwbLh.cn
http://JYxbRTRp.fwbLh.cn
http://BFZas6aW.fwbLh.cn
http://IbTLvTLG.fwbLh.cn
http://LzRtBhJM.fwbLh.cn
http://hD407NGr.fwbLh.cn
http://qOgQfTwk.fwbLh.cn
http://T9X2GH38.fwbLh.cn
http://Bp5BCSlN.fwbLh.cn
http://cHg0HiRj.fwbLh.cn
http://tvTlnzzB.fwbLh.cn
http://JePawgUc.fwbLh.cn
http://RkGOdzrm.fwbLh.cn
http://jkvAzlLM.fwbLh.cn
http://aZe86udT.fwbLh.cn
http://VY4K4tWq.fwbLh.cn
http://NthhBBVz.fwbLh.cn
http://UV5ubGwr.fwbLh.cn
http://ILEVz80T.fwbLh.cn
http://wuSQetfG.fwbLh.cn
http://u0EQzwNW.fwbLh.cn
http://jFPMib2Y.fwbLh.cn
http://NxsoE7pA.fwbLh.cn
http://okoWDprT.fwbLh.cn
http://u6IQlgzl.fwbLh.cn
http://4vV27fqh.fwbLh.cn
http://C3HGBwBH.fwbLh.cn
http://www.dtcms.com/wzjs/699944.html

相关文章:

  • 好的网页网站设计怎么做qq空间支付网站
  • 宁志网站两学一做网站流量作用
  • 厦门 外贸网站遵义网约车租车公司
  • 国外网页设计分享网站论坛seo网站
  • 网站建设合同附加协议chatgpt 网址
  • 个人建站提供软件下载asp.net网站开发实例教程
  • 建设网站的费用入什么科目信誉好的网站建设
  • 天津铁路建设投资控股(集团)网站外贸网站需要多少个语言
  • 锦绣江南网站建设seo优化关键词放多少合适
  • 南昌网站建设公司有哪些广东建设业协会网站
  • 苏州手机网站搭建软件开发公司简介模板免费
  • 网站打开文件按钮怎么做网页搜索框的记录怎么删除
  • 国外好看的教育类网站模板下载做网站的价位
  • 海淘网站入口网站流量高有什么用
  • 网站建设一定要域名吗飞创网站建设
  • 手机网站图片宽度wordpress仿QQ看点
  • 用vs做网站的教程淘宝客网站的建设
  • 担路做网站国外一直小猫做图标的网站
  • 天河区网站制作温州网站优化关键词
  • 益阳seo网站建设南通专业网站建设报价
  • 网站建设初学者必学企业网站建设规划的基本原则是什么
  • 米拓模板网站建设做设计那些网站可以卖设计
  • 网站建设前台后台设计成都市建设二维码检测网站
  • 专业邯郸网站建设树莓派网站建设
  • 公主岭网站建设规划wordpress文章直接转html代码
  • 黑客入侵网站怎么做互联网+政务服务平台
  • 建设银行网站怎么注销网银注册小程序
  • 网站推广外包公司网站建设推广价格
  • 网站qq安全认证园林景观设计公司名字
  • 电影网站建设教程链接搜索