这是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与业务数据连接起来也不是一件容易的事。基本上,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;
- 在Windows.Resource中定义CollectionViewSource
在本文中,仅读取数据。如果用户应该能够编辑数据,请使用ObservableCollection。但是,最好使DataGrid保持只读状态,因为DataGrid中的编辑行为与电子表格程序中的编辑行为不同。如果用户必须双击要更改的行并打开另一个窗口以编辑该实体或添加新实体,则可能会更好。