WPF的ComboBox绑定[个人学习笔记](不成熟)

第一部分

参考文章:https://www.cnblogs.com/fdyang/p/3459309.html

1.  在UI(Xaml) 里面直接绑定数据.(不实用)【可运行】


    
        
            ComboBox Item #1
            ComboBox Item #2
            ComboBox Item #3
        
    

WPF的ComboBox绑定[个人学习笔记](不成熟)_第1张图片

2. 动态绑定数据.

2.1 绑定XML到ComboBox【可运行,无数据】

     前台Xaml里面需要在Resource里面指定XmlDataProvider. 并设定绑定.  后台无需任何代码。


  
    
  
  
    
    
    
      
        
        
                
        
        
      
    
  

WPF的ComboBox绑定[个人学习笔记](不成熟)_第2张图片

3. 绑定Dictionary到ComboBox.

【原文章没有关联性,未完成】

第二部分

参考文章:http://www.cnblogs.com/mantian/archive/2013/01/22/2871775.html

1.ComboBox参数的解释

WPF的ComboBox绑定[个人学习笔记](不成熟)_第3张图片

第三部分

参考文章:https://zhidao.baidu.com/question/408153485.html

1.在wpf中绑定comboBox的值,Dictionary【可运行】【后台绑定】放在public MainWindow下

前台:
 
后台:
public MainWindow()
        {
            InitializeComponent();
            Dictionary mydic = new Dictionary()
            {
                {1,"a"},
                {2,"b"},
                {3,"c"}
            };
            combobox.ItemsSource = mydic;
            combobox.SelectedValuePath = "Key";
            combobox.DisplayMemberPath = "Value";
        }
ItemsSource 指定comboBox的数据源,可以是字典,list等任何形式的数据集合
SelectedValuePath 表示每个item的的实际值
DisplayMemberPath 表示每个item的显示值
WPF的ComboBox绑定[个人学习笔记](不成熟)_第4张图片

WPF的ComboBox绑定[个人学习笔记](不成熟)_第5张图片


2.在wpf中绑定comboBox的值,Dictionary【前台绑定】【自写】

WPF的ComboBox绑定[个人学习笔记](不成熟)_第6张图片


第四部分

参考文章:

wpf数据绑定binding与INotifyPropertyChanged(可运行,文章第一部分是《深入浅出WPF》第10章的再深入延续;第二部分为书本10.1讲)

XAML文件:


    
        
        
        
    

TextBox 的Text是依赖属性。

cs文件,新手问题一般都比较多,我就把所有代码都复制过来了:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;

namespace InotifyChangedTest
{
    /// 
    /// Interaction logic for Window1.xaml
    /// 
    public partial class Window1 : Window
    {
        public person ps{get;set;}
        public Window1()
        {
            InitializeComponent();
            ps = new person();
            //注意这句,指定数据源
            this.DataContext = ps;
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            ps.name += "a";
            ps.desc += "b";
        }

    }
//实现INotifyPropertyChanged接口,当数据改变时通知
    public class person:INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        private string _name;
        public string name
        {
            get 
            {
                return _name;
            }
            set
            {
                if (value != _name)
                {
                    _name = value;
                    //改变时通知
                    prochanged("name");
                }
            }
        }
        private string _desc;
        public string desc
        {
            get
            {
                return _desc;
            }
            set
            {
                if (value != _desc)
                {
                    _desc = value;
                    //改变时进行通知
                    prochanged("desc");
                }
            }
        }
        
        private void prochanged(string info)
        {
            if (PropertyChanged != null)
            {
                //是不是很奇怪,这个事件发起后,处理函数在哪里?
                //我也不知道在哪里,我只知道,绑定成功后WPF会帮我们决定怎么处理。
                PropertyChanged(this, new PropertyChangedEventArgs(info));
            }
        }
    }
}
参考文章:

wpf后台代码数据绑定


参考文章:

WPF之数据绑定总结(全面)



你可能感兴趣的:(WPF)