绑定和检索值

本文关键字:检索 绑定 | 更新日期: 2023-09-27 18:18:17

我目前正在将Company对象绑定到由OleDB查询填充的DataGrid。每个公司都有一个唯一的ID,但是我不想在DataGrid中显示公司的ID。

我可以很容易地检索DataGrid中显示的每个Company的Name,只需做一些简单的事情,例如获取所选行的第一个单元格的内容。

但是,由于没有显示唯一的ID,我无法检索相关的Company的ID。从本质上讲,我想实现的是;

MySqlCommand sqlCmd = new MySqlCommand("UPDATE companies SET name = @name, addr1 = @addr1 WHERE CompanyID = @companyID)", sqlCon);

nameaddr1来源于用户在DataGrid中选择公司并单击update按钮后在XAML中绑定的文本框。文本框由;

绑定
<TextBox Text="{Binding SelectedItem.CompanyName, ElementName=dataGrid}" TextWrapping="Wrap" Margin="10" IsReadOnly="true"/>
<TextBox Text="{Binding SelectedItem.CompanyAddr1, ElementName=dataGrid}" Margin="10,0,10,10" Height="26" IsReadOnly="true"/>

我可以将ID绑定到TextBox并隐藏它,但是我觉得有一个更好的方法

绑定和检索值

  1. 创建一个类公司:

    public partial class Compay
    {
        public int CompanyID { get; set; }
        public string Name { get; set; }
        public string Addr1 { get; set; }
    }
    
  2. View Model

    public class CompanyVM : ViewModelBase
    {
          public CompanyVM()
          {
            CompaySource= getAllCompanies();
          }
    
         private ObservableCollection<Compay> _compaySource;
         public ObservableCollection<Compay> CompaySource
        {
            get
            {
                return _compaySource;
            }
            set
            {
                _compaySource= value;
                OnPropertyChanged("CompaySource");
            }
        }
    }