Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何向特定单元格添加内容?_C#_Wpf - Fatal编程技术网

C# 如何向特定单元格添加内容?

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定义:

<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;