C# WPF 快速开发04数据绑定、列表控件

//Slider进度条与TextBox间的数据绑定。

<SliderName="m_slider"></Slider>

<TextBox Text="{ Binding Value,ElementName=m_slider}"Name="m_text_main"></TextBox>

//Valuem_slider的一个属性值

//数据绑定的类。C#类的添加:右键点击解决方案--添加--类;

1.创建一个类

class MyClass

    {

        public string name

        {

            get;

            set;

        }

        public string age

        {

            get;

            set;

        }

    }

2.给要绑定的控件设定DataContext

     MyClass m_me = new MyClass();//创建类并初始数据

        privatevoid Window_Loaded(objectsender, RoutedEventArgs e)

        {

            m_me.name = "乡巴佬";

            m_me.age = 23;

            m_txtName.DataContext = m_me;//让控件变量绑定类

            m_txtAge.DataContext = m_me;

    //上面两行代码可以用this.DataContext=m_me;代替。因为this指主窗口,<Grid>标签在里面,而这些控件在<Grid>里面,所以这样可以快速使某个标签里的所有控件快速绑定。另外,后面是还可以再绑定为另外的对象的,比如this.DataContext=m_me;m_txtAge.DataContext = m_her;(PS:this可以用标签名替换)

        }

3.控件绑定类的某成员变量

<TextBox Name

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是用C#代码实现WPF中实现不同页面相同ComboBox控件绑定数据数据的同步的方法: 1. 首先,创建一个ViewModel类,并在其中定义ComboBox的数据源和选中项属性,同时实现INotifyPropertyChanged接口,如下所示: ``` public class MyViewModel : INotifyPropertyChanged { private ObservableCollection<string> _itemsSource; private string _selectedItem; public ObservableCollection<string> ItemsSource { get { return _itemsSource; } set { _itemsSource = value; OnPropertyChanged("ItemsSource"); } } public string SelectedItem { get { return _selectedItem; } set { _selectedItem = value; OnPropertyChanged("SelectedItem"); } } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } ``` 2. 在每个页面的代码中,创建一个MyViewModel实例,并将ComboBox的ItemsSource和SelectedValue属性分别绑定到ViewModel中对应的属性,如下所示: ``` public partial class Page1 : Page { private MyViewModel _viewModel; public Page1() { InitializeComponent(); _viewModel = MyViewModel.Instance; comboBox1.ItemsSource = _viewModel.ItemsSource; comboBox1.SetBinding(ComboBox.SelectedValueProperty, new Binding("SelectedItem") { Mode = BindingMode.TwoWay }); } } public partial class Page2 : Page { private MyViewModel _viewModel; public Page2() { InitializeComponent(); _viewModel = MyViewModel.Instance; comboBox1.ItemsSource = _viewModel.ItemsSource; comboBox1.SetBinding(ComboBox.SelectedValueProperty, new Binding("SelectedItem") { Mode = BindingMode.TwoWay }); } } ``` 3. 在MyViewModel类中使用Singleton模式创建一个实例,确保所有页面使用的是同一个ViewModel对象,如下所示: ``` public class MyViewModel : INotifyPropertyChanged { private static MyViewModel _instance; private ObservableCollection<string> _itemsSource; private string _selectedItem; public static MyViewModel Instance { get { if (_instance == null) { _instance = new MyViewModel(); } return _instance; } } public ObservableCollection<string> ItemsSource { get { return _itemsSource; } set { _itemsSource = value; OnPropertyChanged("ItemsSource"); } } public string SelectedItem { get { return _selectedItem; } set { _selectedItem = value; OnPropertyChanged("SelectedItem"); } } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } ``` 这样就可以在不同页面中实现ComboBox控件绑定数据数据的同步了。需要注意的是,要确保ViewModel的生命周期和页面的生命周期一致,否则可能会出现数据同步不成功的情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值