• Binding TwoWay demo


    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using System.ComponentModel;
    using System.Windows.Data;


    //System.ComponentModel 命名空间提供用于实现组件和控件运行时和设计时行为的类。
    //此命名空间包括用于实现属性和类型转换器、绑定到数据源以及授权组件的基类和接口。


    namespace SilverlightApplication2
    {
    public partial class text : UserControl
    {
    //一定要是公共的
    User user = null;// new User();
    public text()
    {
    InitializeComponent();
    }
    private void UserControl_Loaded(object sender, RoutedEventArgs e)
    {
    // System.ComponentModel.BindableAttribute
    // Binding
    user = new User();
    user.Name = "TerryLee";
    user.Address = "中国 天津";
    //DataContext 数据上下文类型
    //只要把user对象给控件的数据上下文即可
    lblName.DataContext = user;
    lblAddress.DataContext = user;

    }

    private void ChangeP_Click(object sender, RoutedEventArgs e)
    {
    user.Address = "china beijing";
    user.Name = "muer";

    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
    this.CurrentPr.Text = " name:" + user.Name.ToString() + " Address:" + user.Address.ToString(); ;
    }

    }

    //INotifyPropertyChanged:向客户端发出某一属性值已更改的通知。
    public class User : INotifyPropertyChanged
    {
    public event PropertyChangedEventHandler PropertyChanged;

    private string _name;
    public string Name
    {
    get { return _name; }
    set
    {
    _name = value;
    if (PropertyChanged != null)
    {
    PropertyChanged(this, new PropertyChangedEventArgs("Name"));
    }
    }
    }

    private string _address;
    public string Address
    {
    get { return _address; }
    set
    {
    _address = value;
    if (PropertyChanged != null)
    {
    PropertyChanged(this, new PropertyChangedEventArgs("Address"));
    }
    }
    }
    }
    }
    View Code
    <UserControl x:Class="SilverlightApplication2.text"
    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"
    mc:Ignorable
    ="d"
    d:DesignHeight
    ="300" d:DesignWidth="400" Loaded="UserControl_Loaded">

    <Grid x:Name="LayoutRoot" Background="#46461F">
    <Grid.RowDefinitions>
    <RowDefinition Height="160"></RowDefinition>
    <RowDefinition Height="40"></RowDefinition>
    <RowDefinition Height="40"></RowDefinition>
    <RowDefinition Height="40"></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
    <ColumnDefinition Width="150"></ColumnDefinition>
    <ColumnDefinition Width="*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Button Width="100" Height="30" HorizontalAlignment="Left"
    Content
    ="当前页面的属性值"
    Grid.Row
    ="0"
    Grid.Column
    ="0"
    Click
    ="Button_Click"/>
    <TextBlock Foreground="White" FontSize="18" Text="姓名:"
    Grid.Row
    ="1" Grid.Column="0" HorizontalAlignment="Right"/>
    <TextBox x:Name="lblName" FontSize="18"
    Grid.Row
    ="1" Grid.Column="1" HorizontalAlignment="Left"
    Text
    ="{Binding Name,Mode=TwoWay}"/>
    <TextBlock Foreground="White" FontSize="18" Text="位置:"
    Grid.Row
    ="2" Grid.Column="0" HorizontalAlignment="Right"/>
    <TextBox x:Name="lblAddress" FontSize="18"
    Grid.Row
    ="2" Grid.Column="1" HorizontalAlignment="Left"
    Text
    ="{Binding Address,Mode=TwoWay}"/>
    <Button Name="ChangeP" Click="ChangeP_Click"
    DataContext
    ="{Binding}"
    Content
    ="改变属性值 "
    HorizontalAlignment
    ="Left"
    Width
    ="78"
    Height
    ="30"
    Grid.Column
    ="1"
    Grid.Row
    ="0"
    ></Button>
    <TextBlock Foreground="White" FontSize="18"
    x:Name
    ="CurrentPr"
    Grid.Row
    ="4"
    Grid.Column
    ="0"
    HorizontalAlignment
    ="Left"
    Grid.ColumnSpan
    ="2"/>
    </Grid>
    </UserControl>

    总结:通过  Text="{Binding Address,Mode=TwoWay}"  这种方式,当我点击提交按钮的时候不需要写个方法去拿页面上所有元素的值,
    只要拿到当前实例化的对象User就可以拿到这个页面的所有的值。这就是MVVM所带来的便捷,可以让开发人员少写很多代码。

  • 相关阅读:
    《Effective Java》—— 读后总结
    自己写的数据交换工具——从Oracle到Elasticsearch
    Oozie 快速入门
    [大数据之Spark]——快速入门
    《Spark快速大数据分析》—— 第七章 在集群上运行Spark
    [大数据之Sqoop] —— Sqoop初探
    Java程序员的日常——存储过程知识普及
    Java程序员的日常—— 基于类的策略模式、List<?>与List、泛型编译警告、同比和环比
    org.postgresql.util.PSQLException:致命:抱歉,已经有太多客户了(org.postgresql.util.PSQLException: FATAL: sorry, too many clients already)
    PostgreSQL学习笔记(九) 用户、角色、权限管理
  • 原文地址:https://www.cnblogs.com/muer/p/Twoway.html
Copyright © 2020-2023  润新知