让我们说出我的数据网格定义:
<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>
如何在不定义ItemSource的情况下向特定单元格添加值?我只需要一行包含值。最终结果应该是这样的:
In corso | Terminati | Totali
4 5 9
我已经创建了Path中定义的属性,如下所示:
private int _playingMatch = 0;
public int PlayingMatch
{
get { return _playingMatch; }
set { SetField(ref _playingMatch, value); }
}
但是当我调用属性时,我可以看到设置的值在set(value)上设置断点,遗憾的是没有添加值的新行。我做错了什么?
更新:
我已将此行添加到datagrid,我需要简单地使用属性值(PlayingMatch,TerminatedMatch,TotalMatch)更新此行,如何?
<DataGrid.Items>
<RowDefinition />
</DataGrid.Items>
答案 0 :(得分:1)
您可以使用匿名对象并执行此操作:
Dgrd.Items.Add(new { PlayingMatch="abc", TerminatedMatch="abc", TotalMatch="12"});
您可以使用Items
清除Dgrd.Items.Clear()
集合,从网格中删除所有项目。
要更改该项目,
Dgrd.Items.Clear();
Dgrd.Items.Add(new { PlayingMatch = "def", TerminatedMatch = "pqr", TotalMatch = "122" });
您可以使用dynamic
。
dynamic obj = new ObservableCollection<dynamic> { new { PlayingMatch = "abc", TerminatedMatch = "abc", TotalMatch = "12" } };
Dgrd.ItemsSource = obj;
答案 1 :(得分:0)
我假设您的绑定是正确的,并且Binding是正确的属性(实际上没有使用DataGrid)。您需要通知UI已对相应属性进行了更改。这是通过实现INotifyPropertyChanged接口并在设置值时调用它来完成的。互联网上有很多指南。此外,如果属性发生更改,则需要指定应为属性更新UI:
<DataGridTextColumn Header="Totali" Binding="{Binding Path = TotalMatch, UpdateSourceTrigger=PropertyChanged}" />
INotifyPropertyChanged指南: https://msdn.microsoft.com/en-us/library/ms229614(v=vs.100).aspx
此外,如果PropertyChangedEventHandler为null,则绑定存在问题。
答案 2 :(得分:0)
您是否设置了&#34; DataContext&#34;你的WPF表单指向暴露了getter / setter属性的控制器对象?如果没有,它仍会运行,但不会告诉你它无法找到&#34; bind&#34;对象,但也不会崩溃。
因此,您可能需要明确添加
DataContext = myControllerObject;
同样,如果您使用的是MVVM概念并且没有直接在表单中使用代码,我也不会知道表单,控制器。