我在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>
答案 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)
我们已经使用选定项目上的对话框并通过另一个视图更新数据。通过绑定获取所选项目很容易,这似乎解决了我们的问题