【问题标题】:How to refresh a Telerik datagrid using UWP and MVVM Light如何使用 UWP 和 MVVM Light 刷新 Telerik 数据网格
【发布时间】:2017-12-26 22:57:48
【问题描述】:

感谢您的光临。

单击“刷新”按钮时,我无法刷新 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。我不想仅仅为了更新 UI 而打破 MVVM 模式。

非常感谢您的帮助。提前非常感谢!!!

编辑:

我将视图中的 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">

【问题讨论】:

    标签: c# xaml uwp mvvm-light telerik-grid


    【解决方案1】:

    Source 没有实现更改通知,因此 UI 无法知道您分配了不同的实例。

    在MVVM中绑定任意形式的list时,需要3个部分的变化通知:

    • 您在(来源)上公开列表的属性
    • 列表本身(可观察的集合负责)
    • 您要公开的类型的每个属性(UserData 的每个属性)

    【讨论】:

    • 感谢您的回复。请你提供一个简短的例子。
    • 如果您甚至不知道如何实现属性更改通知,那么您错过了 MVVM 的一些非常关键的部分。可能是使其发挥作用的最关键的因素。我在学习 MVVM for WPF 时写了一篇基础介绍,希望对您有所帮助:social.msdn.microsoft.com/Forums/en-US/…
    猜你喜欢
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 2011-12-09
    • 2016-10-23
    • 1970-01-01
    相关资源
    最近更新 更多