感谢您的光临。
单击“刷新”按钮时,我无法刷新Telerik网格。换句话说,如果用户更改数据并决定不保存数据,则单击刷新按钮应使用原始值重新加载网格。
以下是我在刷新视图中的XAML:
<Button Content="Refresh" Grid.Row="1" Margin="92,5,0,11" Command="{x:Bind ViewModel.RefreshDataCommand}"/>
这是我在网格视图中的XAML:
<tg:RadDataGrid ColumnDataOperationsMode="Flyout" x:Name="grid" ItemsSource="{Binding Source,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" SelectedItem="{x:Bind ViewModel.CurrentUserData, Mode=TwoWay}" UserEditMode="Inline" Grid.ColumnSpan="4" Grid.Row="1" AutoGenerateColumns="False">
请注意,在上面的代码中,网格绑定到ViewModel中的Source属性。以下是ViewModel中的绑定属性:
public ObservableCollection<UserData> Source
{
get
{
try
{
udCol = GetUserData(FileName).Result;
return udCol;
}
catch (AggregateException ex)
{
return null;
}
}
set
{
udCol = value;
}
}
当页面导航到上面时,上面的属性会自动加载网格中的数据。
以下是“刷新”按钮绑定的功能:
private void RefreshDataCommandAction()
{
udCol[0].Name = "test1";
CurrentUserData = udCol[0];
Source = udCol;
RaisePropertyChanged("Source");
}
我正在尝试上面的函数,这就是代码看起来多余的原因,但无论我做什么,此函数中的新赋值都不会更新UI。理想情况下,用户将更新UI中的单元格,然后单击“刷新”以返回原始状态或仅重新加载数据。 ViewModel继承了包含INotifyPropertyChanged的ViewModelBase,我认为这应该足以在更改属性时将更改传播到UI。我不想打破MVVM模式只是为了更新UI。
我真的很感激一些帮助。非常感谢提前!!!
编辑:
我将View中的XAML更改回来,因为它破坏了我的ADD功能:
<tg:RadDataGrid ColumnDataOperationsMode="Flyout" x:Name="grid" ItemsSource="{x:Bind ViewModel.Source}" SelectedItem="{x:Bind ViewModel.CurrentUserData, Mode=TwoWay}" UserEditMode="Inline" Grid.ColumnSpan="4" Grid.Row="1" AutoGenerateColumns="False">
答案 0 :(得分:0)
Source没有实现Change Notification,因此UI无法知道您分配了不同的实例。
在MVVM中绑定任何形式的列表时,3个部分需要更改通知: