[英]Upload dataGrid in Wpf MVVM project
这是 ChildViewModel 的类:
public class ChildViewModel : Screen
{
private string imie = string.Empty;
private string nazwisko = string.Empty;
private string wiek = string.Empty;
private Person person;
private ObservableCollection<Person> personColl;
private MainViewModel mainView = new MainViewModel();
public ChildViewModel(Person person, ObservableCollection<Person> personColl)
{
this.person = person;
this.personColl = personColl;
this.Wyswietl();
}
public string ImieTxt
{
get => this.imie;
set
{
this.imie = value;
this.NotifyOfPropertyChange(() => this.ImieTxt);
}
}
public string NazwiskoTxt
{
get => this.nazwisko;
set
{
this.nazwisko = value;
this.NotifyOfPropertyChange(() => this.NazwiskoTxt);
}
}
public string WiekTxt
{
get => this.wiek;
set
{
this.wiek = value;
this.NotifyOfPropertyChange(() => this.WiekTxt);
}
}
public void Zmien()
{
this.personColl[mainView.DataGridIndex].Imie = this.ImieTxt;
this.personColl[mainView.DataGridIndex].Nazwisko = this.NazwiskoTxt;
this.personColl[mainView.DataGridIndex].Wiek = this.WiekTxt;
this.TryClose();
}
private void Wyswietl()
{
this.ImieTxt = this.person.Imie;
this.NazwiskoTxt = this.person.Nazwisko;
this.WiekTxt = this.person.Wiek;
}
}
单击按钮“ Zmien ”后,我不知道如何将新数据从 ChildView 上传到 MainView 中的 dataGrid。 在 MainView 我有 dataGrid,我从 MainViewModel 加载列表中的数据。 单击按钮“ Zmien ”后,新数据不会加载到dataGrid中。
也许你知道怎么做?
从我关于 Codeproject Guide to WPF DataGrid Formatting Using Bindings 的文章:
将 DataGrid 与业务数据连接起来
甚至将 DataGrid 与业务数据连接起来也并非易事。 基本上,一个 CollectionViewSource 用于将 DataGrid 与业务数据连接起来:
CollectionViewSource 执行实际的数据导航、排序、过滤等。
<Window.Resources>
<CollectionViewSource x:Key="ItemCollectionViewSource" CollectionViewType="ListCollectionView"/>
</Window.Resources>
<DataGrid
DataContext="{StaticResource ItemCollectionViewSource}"
ItemsSource="{Binding}"
AutoGenerateColumns="False"
CanUserAddRows="False">
//create business data
var itemList = new List<stockitem>();
itemList.Add(new StockItem {Name= "Many items", Quantity=100, IsObsolete=false});
itemList.Add(new StockItem {Name= "Enough items", Quantity=10, IsObsolete=false});
...
//link business data to CollectionViewSource
CollectionViewSource itemCollectionViewSource;
itemCollectionViewSource = (CollectionViewSource)(FindResource("ItemCollectionViewSource"));
itemCollectionViewSource.Source = itemList;
在本文中,仅读取数据。 如果用户应该能够编辑数据,请使用 ObservableCollection。 但是,让 DataGrid 保持只读状态通常更好,因为在 DataGrid 中编辑的行为与在电子表格程序中使用的行为不同。 如果用户必须双击他想要更改的行并打开另一个窗口来编辑该实体或添加新实体,这可能会更好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.