zoukankan      html  css  js  c++  java
  • WPF双向绑定

    需求:

    思想批量保存数据.

    思路:

    看了一下MVVM.发现只需要实现前台和后台数据的同步即可.也就是前台的文本框内容变化时后台的对象的属性也要变化就可以了.

    参考:

    http://www.cnblogs.com/luluping/archive/2011/05/06/2039475.html

    该网址只包括单个对象,而我的需要把集合Bind到Datagrid上,在DataGrid上修改后在整批提交.思路是一样的.

    即:类需从INotifyPropertyChanged继承

    再定义好ViewModel,窗体和ViewModel 绑上就可以了.

      public class Person : INotifyPropertyChanged 
        {
    
            public event PropertyChangedEventHandler PropertyChanged;
    
            private string name;
            public string Name
            {
                get
                {
                    return name;
                }
                set
                {
                    name = value;
                    if(this.PropertyChanged != null)
                    {
                        this.PropertyChanged.Invoke(this,new PropertyChangedEventArgs("Name"));
    
                    }
                }      
            }
    
    
        }
    

     ViewModel

     public class PersonViewModel
        {
            public List<Person> LiPerson
            {
                get;
                set;
            }
    
    
        }
    

     Form

     public partial class MainWindow : Window
        {
           
            PersonViewModel personViewModel;
            
            public MainWindow()
            {
                InitializeComponent();
    
                personViewModel = new PersonViewModel();
                personViewModel.LiPerson = new List<Person>();
                Person person = new Person();
                person.Name = "xxx";
                personViewModel.LiPerson.Add(person);
                Person person2 = new Person();
                person2.Name = "asd";
                personViewModel.LiPerson.Add(person2); 
               
                this.DataContext = personViewModel;
            }
    
            private void Button_Click_1(object sender, RoutedEventArgs e)
            {
              
                MessageBox.Show(personViewModel.LiPerson[0].Name);
                MessageBox.Show(personViewModel.LiPerson[1].Name);
    
            }
        }
    

     xaml

    <Window x:Class="WpfStudy.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit" 
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="30"></RowDefinition>
                <RowDefinition Height="400*"></RowDefinition>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="200"></ColumnDefinition>
                <ColumnDefinition Width="200*"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Button Content="Button" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left"  VerticalAlignment="Top" Width="75" Click="Button_Click_1"/>
            <TextBox HorizontalAlignment="Left" Grid.Column="0" Height="23"  TextWrapping="Wrap" Text="{Binding Path=Name}" VerticalAlignment="Top" Width="120"/>
            <my:DataGrid Grid.Row="1"  Grid.Column="0"  Grid.ColumnSpan="5"
                         AutoGenerateColumns="False"  HorizontalAlignment="Left"
                         Name="dgSupGridView" ItemsSource="{Binding Path=LiPerson,Mode=TwoWay}"  
                         ScrollViewer.HorizontalScrollBarVisibility="Auto"  
                         ScrollViewer.VerticalScrollBarVisibility="Auto" >
                <my:DataGrid.Columns>
                    <my:DataGridTextColumn Header="Name" IsReadOnly="False" Width="100"  Binding="{Binding Name}" />
                </my:DataGrid.Columns>
            </my:DataGrid>
    
        </Grid>
    </Window>
    

     对mvvm不熟悉的同学就可以用这种方式来实现批量保存了.

  • 相关阅读:
    为什么不能直接导入Statsmodels使用?
    数据分析工作的主要内容和基本流程
    Nodejs 包与 NPM 第三方模块安装和 package.json 以及 CNPM (4)
    CommonJs 和 Nodejs 中自定义模块 (3)
    pyhthon 处理pdf 合集
    02 nodejs HTTP模块和url模块配置supervisor
    1 nodejs简介与开发环境配置
    mysql 修改root密码和禁用无密码登录配置
    floodFill填充函数函数(六)
    粗略的调整图片对比度和亮度(五)
  • 原文地址:https://www.cnblogs.com/sportdog/p/4184199.html
Copyright © 2011-2022 走看看