2014-07-23 84 views
0

我有两个数据网格和一个按钮的视图。 enter image description here 第一个数据网格包含文章列表,第二个数据网格为空,用户按下按钮后,将在此数据网格中添加所选文章。 我在此项目中添加Caliburn.Micro以使用“屏幕”。问题是,如果我按添加文章按钮,没有任何改变,并且数据网格总是空的。 这是XAML代码:WPF Datagrid NotifyOfPropertyChange不起作用

<DataGrid temsSource="{Binding Articles}" 
    AutoGenerateColumns="False" HorizontalAlignment="Left" CanUserAddRows="False" > 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Id" Binding="{Binding Id}"/> 
     <DataGridTextColumn Header="Name" Binding="{Binding Name}"/> 
     <DataGridTextColumn Header="Price" Binding="{Binding Price}" /> 
    </DataGrid.Columns> 
</DataGrid> 

而这个视图模型代码:

public class ShellViewModel : Screen 
{ 
    public List<Article> _articles; 
    public List<Article> Articles 
    { 
     get { return _articles; } 
     set 


{ 
     if (value != _articles) 
     { 
      _articles = value; 
      NotifyOfPropertyChange("Articles"); 
     } 
    } 
} 


public void AddArticle() 
{    
    Articles.Add(new Article 
    { 
     Id = ArticleSelected.Id, 
     Name = ArticleSelected.Name, 
     Price = ArticleSelected.Price, 
    }); 

    NotifyOfPropertyChange("Articles");    
} 

}

我哪里错了?

回答

2

问题是不是因为财产通知,但收集的变化不通知,以便可能使用ObservableCollection<T>将解决您的问题

public ObservableCollection<Article> _articles; 
public ObservableCollection<Article> Articles 
{ 
.... 
+0

还有收集CM称为BindableCollection基础上,的ObservableCollection – mvermef

2

List<Article> _articles更改为ObservableCollectiont<Article> _articles,如果使用ObservableCollection,那么无论何时修改列表,都会引发CollectionChanged事件 - 一个会告诉WPF绑定更新的事件。检查INotifyCollectionChanged

public ObservableCollection<Article> _articles; 
public ObservableCollection<Article> Articles