无法通过Binding在DataGrid中添加新行

时间:2016-07-03 13:51:36

标签: c# wpf

我是这样的DataGrid:

<DataGrid x:Name="TotalMatch" ItemsSource="{Binding MatchStat}">
<DataGrid.Columns>
     <DataGridTextColumn Header="In corso" Binding="{Binding Path = PlayingMatch}"/>
</DataGrid.Columns>
</DataGrid>

我要做的是创建一个项目计数,结果应该是:

| In corso |
     5

我将Binding设置为PlayingMatch,为此我在ViewModel类中定义了这个:

public Models.MatchStat MatchStat = new Models.MatchStat();

所以在模型I中这个定义:

public class MatchStat : ViewModel
{
    private static int _playingMatch    = 0;
    public int PlayingMatch
    {
        get { return _playingMatch; }
        set { SetField(ref _playingMatch, value); }
    }
}

当我添加新值作为计数时,我这样做了:

var vm = new ViewModel();
vm.MatchStat.PlayingMatch += 1;

但是&#34;在corso&#34;下没有显示行。细胞,为什么?

2 个答案:

答案 0 :(得分:0)

  1. 您的ItemsSource应该是MatchStat的集合。
  2. 您是否已将vm指定为Window的DataContext?

答案 1 :(得分:0)

必须为DataGrid.Itemssource分配IEnumerable(集合,数组或列表)对象。 使用实现IEnumerable的ObservableCollection,如果代码隐藏发生变化(在集合中添加或删除项目),也会更新Window。

您在ViewModel类中的声明应该是:

public ObservableCollection<Models.MatchStat> MatchStats = new ObservableCollection<Models.MatchStat>();

现在,您需要创建一个MatchStat对象并将其添加到之前初始化的集合中。

Models.MatchStat matchStat1 = new Models.MatchStat();
matchStat1.PlayingMatch += 1;

MatchStats.Add(matchStat1);