2015-11-01 35 views
0

我有一個MVVM應用程序中的數據網格綁定有點問題。我實現了INotifyPropertyChanged,但它不適用於數據網格。每次我插入記錄到數據庫網格不刷新,我不得不重新啓動應用程序來查看更改。下面是XML:Datagrid綁定沒有獲取MVVM數據集更新

<DataGrid AutoGenerateColumns="False" x:Name="PlantsGrid" Grid.Row="6" Grid.Column="0" Grid.ColumnSpan="8" Margin="5" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False" SelectionMode="Single" IsReadOnly="True" ItemsSource="{Binding PlantsCollection}" SelectionChanged="PlantsGrid_SelectionChanged" > 
      <DataGrid.Columns> 
       <DataGridTextColumn x:Name="Nazwa" Header="Nazwa" Width="*" Binding="{Binding Name}"/> 
       <DataGridTextColumn x:Name="LatName" Header="Nazwa łacińska" Width="*" Binding="{Binding LatinName}" /> 
      </DataGrid.Columns> 
      <DataGrid.DataContext> 
       <ViewModel:PlantViewModel/> 
      </DataGrid.DataContext> 
     </DataGrid> 

和代碼隱藏:添加記錄到數據庫方面

private ObservableCollection<Plant> _plantsCollection; 
public ObservableCollection<Plant> PlantsCollection 
    { 
     get 
     { 
      return _plantsCollection; 
     } 
     set 
     { 
      _plantsCollection = value; 
      OnPropertyChanged("PlantsCollection"); 
     } 
    } 
+0

可以顯示在您添加記錄的代碼。 –

回答

0

後,你還需要將它添加到您的收藏在你的視圖模型。如果您只是將記錄添加到數據庫,屬性更改事件將不會觸發,因爲數據庫插入不會連接到該集合。

0

我很困惑,你是否直接向數據庫添加記錄?

如果您試圖避免每次重新啓動該應用程序以顯示數據庫更新時,清除本地數據並重新加載數據庫數據的簡單「刷新」按鈕都將起作用。

但我猜你想要數據庫更新使他們的方式到您的應用程序。
你可以谷歌周圍,但沒有魔術子彈在這裏。

如果您的數據庫在您的應用程序範圍之外進行更新,您必須實施一種方式來通知應用程序數據已更改。
然後解決這些變化的一種方式,包括如何處理衝突。

也許這可以幫助你開始你的旅程。
http://www.codeproject.com/Articles/233770/AutoRefresh-Entity-Framework-data-using-SQL-Server

相關問題