下面是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上传新数据到dataGrid in MainView。在MainView中,我有dataGrid,在MainViewModel中,我从列表中加载数据。单击"Zmien“按钮后,dataGrid中不会加载新数据。
也许你知道怎么做?
发布于 2020-02-28 19:14:35
来自我关于Codeproject 使用绑定的WPF DataGrid格式化指南的文章
将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中的编辑行为与电子表格程序中使用的不同。如果用户必须在他想要更改的行上双击并打开另一个窗口来编辑该实体或添加一个新的窗口,可能会更好。
https://stackoverflow.com/questions/60457652
复制相似问题