使用mvvm在silverlight中的telerik gridview

时间:2010-10-24 13:15:48

标签: silverlight mvvm telerik

我在mvvm silverlight项目中使用teleriks gridview。我正在努力让编辑工作。如果我双击一个单元格,我可以更改该行的文本。我有一个保存按钮的命令。但是当我看到我的ObservableCollection prog时,我看不到变化。所以我把所有东西从observableCollection改为一个通用列表,现在我正在努力将数据绑定到网格。使用可观察的集合,我能够最初将数据绑定到网格。

    private ObservableCollection<Program> _programResults;
    public ObservableCollection<Program> ProgramResults
    {
        get { return _programResults; }
        set { SetObject(ref _programResults, value, "ProgramResults"); }
    }

<telerik:RadGridView Margin="5,5,5,5" ShowGroupPanel="False" Height="300" ItemsSource="{Binding ProgramResults, Mode=TwoWay}" SelectedItem="{Binding SelectedProgram, Mode=TwoWay}" AutoGenerateColumns="False" VerticalAlignment="Top">
                <telerik:RadGridView.Columns>
                    <telerik:GridViewDataColumn Header="Program ID" DataMemberBinding="{Binding ProgramResults.ProgramID}" MinWidth="300"></telerik:GridViewDataColumn>
                    <telerik:GridViewDataColumn Header="Program Name" DataMemberBinding="{Binding Name}" MinWidth="300"></telerik:GridViewDataColumn>                       
            </telerik:RadGridView>

2 个答案:

答案 0 :(得分:1)

gevjen,

我看到的第一个问题是阻止你的收藏更新是你的绑定只是一种方式。尝试这样的事情。

<telerik:GridViewDataColumn Header="Program Name" DataMemberBinding="{Binding Name, Mode=TwoWay}" MinWidth="300"></telerik:GridViewDataColumn>                        

现在,您可能不会想出某些方法来确定收集保存时更改的记录。

也许在ViewModel和每个SelectedProgram对象的集合中创建一个Collection,将Id插入该集合,然后在触发Save时循环遍历此集合并更新这些记录。

这些是ObservableCollection的建议。您需要确保您的对象实现INPC。如果遇到问题,请检查“输出”窗口中的数据绑定错误。

答案 1 :(得分:0)

我们已经使用选定项目上的对话框并通过另一个视图更新数据。通过绑定获取所选项目很容易,这似乎解决了我们的问题