2010-10-24 31 views
0

我在mvvm silverlight項目中使用了teleriks gridview。我正在努力獲得一行工作的編輯。如果我雙擊一個單元格,我可以更改該行的文本。我有一個保存按鈕的命令。但是當我看着我的ObservableCollection編我沒有看到變化。所以我去了,將observableCollection中的所有內容都改成了通用列表,現在我正在努力將數據綁定到網格上。通過可觀察的集合,我能夠將數據初始綁定到網格。使用mvvm的silverlight中的telerik gridview

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>       

現在,您可能不會想出某種方式來決定收集Save時記錄發生了哪些變化。

也許在您的ViewModel和您的每個SelectedProgram對象的集合中創建一個Collection,將Id插入到該集合中,然後在保存被觸發並更新這些記錄時循環訪問該集合。

這些是對ObservableCollection的建議。你需要確保你的對象實現INPC。如果遇到問題,請檢查輸出窗口是否有數據綁定錯誤。