C# 如何向特定单元格添加内容?
假设我有一个datagrid定义:C# 如何向特定单元格添加内容?,c#,wpf,C#,Wpf,假设我有一个datagrid定义: <DataGrid.Columns> <DataGridTextColumn Header="In corso" Binding="{Binding Path = PlayingMatch}"/> <DataGridTextColumn Header="Terminati" Binding="{Binding Path = TerminatedMatch}" /> <DataGrid
<DataGrid.Columns>
<DataGridTextColumn Header="In corso" Binding="{Binding Path = PlayingMatch}"/>
<DataGridTextColumn Header="Terminati" Binding="{Binding Path = TerminatedMatch}" />
<DataGridTextColumn Header="Totali" Binding="{Binding Path = TotalMatch}" />
</DataGrid.Columns>
我创建了路径中定义的属性,如下所示:
In corso | Terminati | Totali
4 5 9
private int _playingMatch = 0;
public int PlayingMatch
{
get { return _playingMatch; }
set { SetField(ref _playingMatch, value); }
}
但是当我调用属性时,我可以看到设置的值在集合(值)上放置了一个断点,不幸的是,没有添加值的新行。我做错了什么
更新:
我已经将这一行添加到datagrid,我需要简单地用属性值(PlayingMatch、TerminatedMatch、TotalMatch)动态更新这一行,如何
我假设您的绑定是正确的,并且绑定是正确的属性(没有真正使用DataGrid)。您需要通知UI已对相应的属性进行了更改。这是通过实现INotifyPropertyChanged接口并在设置值时调用它来实现的。互联网上有很多这方面的指南。此外,如果属性发生更改,您需要指定应更新该属性的UI:
<DataGridTextColumn Header="Totali" Binding="{Binding Path = TotalMatch, UpdateSourceTrigger=PropertyChanged}" />
InotifyProperty更改指南:
另外,如果PropertyChangedEventHandler为null,则表明绑定存在问题。是否将WPF表单的“DataContext”设置为指向已公开getter/setter属性的控制器对象?如果没有,它仍然会运行,但不会告诉您它找不到“bind”对象,但也不会崩溃
因此,您可能需要显式地添加
DataContext = myControllerObject;
同样,如果您使用的是MVVM概念,并且表单中没有直接的代码,我不知道表单控制器。您可以使用匿名对象并执行以下操作:
Dgrd.Items.Add(new { PlayingMatch="abc", TerminatedMatch="abc", TotalMatch="12"});
您可以使用Dgrd.Items.clear()
清除Items
集合,以从网格中删除所有项
要更改该项
Dgrd.Items.Clear();
Dgrd.Items.Add(new { PlayingMatch = "def", TerminatedMatch = "pqr", TotalMatch = "122" });
您可以使用动态
dynamic obj = new ObservableCollection<dynamic> { new { PlayingMatch = "abc", TerminatedMatch = "abc", TotalMatch = "12" } };
Dgrd.ItemsSource = obj;
dynamic obj=newobservecollection{new{PlayingMatch=“abc”,TerminatedMatch=“abc”,TotalMatch=“12”};
Dgrd.ItemsSource=obj;
我已经设置了这个,但问题被误解了。我只想创建一行,必须进行动态更新。问题是,我无法通过xaml(这些属性运行良好)实现这一点。请参阅我的更新。如果这不符合您的要求,请详细说明可以做什么?是否有其他解决方案,例如绑定一行?
dynamic obj = new ObservableCollection<dynamic> { new { PlayingMatch = "abc", TerminatedMatch = "abc", TotalMatch = "12" } };
Dgrd.ItemsSource = obj;