2011-05-26 72 views
3

這裏的情景:如何防止datagrid刷新數據?

  • 兩個工具包數據網格,並排側
  • 電網A是隻讀的,不能更改
  • 電網B的內容是可以改變的,並使用保存在它之下按鈕進行保存

我需要網格A保持不變,直到用戶單擊保存按鈕,而不管網格B可能會或可能不會有任何更改。當我綁定到下面的屬性時,當網格B發生更改時,兩個網格都會更改。我想避免這種情況。

這樣做的最佳方法是什麼?兩個網格目前都綁定到以下屬性:

public EntitySet<SomeEntity> SomeEntities 
    { 
     get { return _entity; } 
     set 
     { 
      if (_entity != value) 
      { 
       _entity= value; 
       OnPropertyChanged("SomePropertyChanged"); 
      } 
     } 
    } 
+0

@Akash - 請參閱我的答案。 – 2011-06-07 16:42:42

回答

0

通過使用帶有OneTime綁定的DataGridTemplateColumn來實現它的工作。例如,

<sdk:DataGridTemplateColumn> 
    <sdk:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Enabled, Mode=OneTime}"></TextBlock> 
     </DataTemplate> 
    </sdk:DataGridTemplateColumn.CellTemplate> 
</sdk:DataGridTemplateColumn> 
2

將網格A的綁定設置爲OneTime。

Text="{Binding Path=Age, Mode=OneTime}" 
+0

我很欣賞這種迴應。我試過這個,但它有同樣的問題。 OneTime在數據上下文發生變化時首次加載**和**時將數據從源發送到目標。我想這意味着我的數據上下文正在改變? – 2011-05-27 12:55:01

+0

你是如何設定上下文的? – 2011-05-27 14:29:10

+0

在我的視圖模型的構造函數中:context = new SomeContext(); – 2011-05-27 15:02:53

2

也許而不是完全切換出SomeEntities的集合,所述網格被結合,也許使用一個ObservableCollection,然後在每個項目的基礎上以更新的ObservableCollection。然後使用Derek提到的Mode = OneTime。

0

您可以創建兩個EntitySets,每個DataGrid一個。保存後,您必須更新綁定到只讀DataGrid的設置。