Silverlight 4.0 刷新DataGrid MVVM Silverlight
我有一个Silverlight页面,其中包含一个DataGrid。它绑定到一个ViewModel。在初始化ViewModel时,我调用了一个RIA服务来从数据库中获取所有记录。我在页面上有另一个按钮,它在单击时打开一个子表单。这个子表单包含一个DataForm,它将记录添加到数据库中,然后再次成功添加记录我使用RIA服务和RaisedPropertyChanged事件获取了所有记录。但是DataGrid没有显示新记录。问题是什么,DataGrid为什么没有刷新…view和viewmodel的代码写在下面Silverlight 4.0 刷新DataGrid MVVM Silverlight,silverlight-4.0,Silverlight 4.0,我有一个Silverlight页面,其中包含一个DataGrid。它绑定到一个ViewModel。在初始化ViewModel时,我调用了一个RIA服务来从数据库中获取所有记录。我在页面上有另一个按钮,它在单击时打开一个子表单。这个子表单包含一个DataForm,它将记录添加到数据库中,然后再次成功添加记录我使用RIA服务和RaisedPropertyChanged事件获取了所有记录。但是DataGrid没有显示新记录。问题是什么,DataGrid为什么没有刷新…view和viewmodel的代码
//XAML of View
<sdk:DataGrid x:Name="grd_classes" ItemsSource="{Binding Classes,Mode=TwoWay}" AutoGenerateColumns="False" Width="300" Grid.Column="1" >
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="Class Name" Width="140" Binding="{Binding Name,Mode=TwoWay}" CanUserReorder="True" CanUserResize="True" CanUserSort="True" />
<sdk:DataGridTextColumn Header="Alias" Width="140" Binding="{Binding Alias,Mode=TwoWay}" CanUserReorder="True" CanUserResize="True" CanUserSort="True" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>
//Code of viewmodel
namespace SMS.ViewModel
{
public class ClassesViewModel:ViewModel
{
private ClassesContext _context = new ClassesContext();
public ClassesViewModel()
{
_context.Load<Class>(_context.GetClassesQuery(), OnLoad, true);
}
public EntitySet<Class> Classes
{
get
{
return _context.Classes;
}
}
public void AddNewClass(object parameter)
{
for (int i = 0; i <= newClass.Count - 1;i++ )
{
_context.Classes.Add(newClass[i]);
}
_context.SubmitChanges(OnSave,null);
}
private void OnLoad(LoadOperation op)
{
if (!op.HasError)
{
RaisePropertyChanged("Classes");
}
}
private void OnSave(SubmitOperation op)
{
if (op.IsComplete)
{
if (op.HasError)
{
MessageBox.Show("Error");
}
else
{
_context = new ClassesContext();
_context.Load<Class>(_context.GetClassesQuery(), OnLoad, true);
DialogResult = true;
}
}
}
}
}
//视图的XAML
//viewmodel的代码
命名空间SMS.ViewModel
{
公共类ClassesViewModel:ViewModel
{
私有类上下文_context=新类上下文();
公共类视图模型()
{
_Load(_context.GetClassesQuery(),OnLoad,true);
}
公共实体集类
{
得到
{
返回上下文类;
}
}
public void AddNewClass(对象参数)
{
对于(int i=0;i是否设置了grd_类DataContext?还需要RaisePropertychanged事件
_context.Load<Class>(_context.GetClassesQuery(), OnLoad, true);
RaisePropertyChanged(() => Classes);
\u context.Load(\u context.GetClassesQuery(),OnLoad,true);
RaisePropertyChanged(()=>类);
网格grd_类有itemSources类,我已经在_ContextLoadOperation后引发了属性更改事件您是否检查了在OnLoad中执行RaisePropertyChanged
后是否调用了类的getter?同时验证类。计数>0