2012-02-07 75 views
0

我有一個Silverlight 4 的DataGrid有其的ItemsSource綁定到的ObservableCollection。當我修改我的ObservableCollection的元素時,修改過的元素在我的網格內正確顯示,除了一個列的元素。此列與其他人的不同之處在於它是TemplateColumn,它使用的是ValueConverter的DataGrid刷新問題

該列的模板由一個簡單的包含路徑控件和標籤的stackPanel組成。在一個簡單的ValueConverter的幫助下,Label被綁定到一些Source對象。

現在的問題是,當我修改某些屬於ObservableCollection的元素時,網格的所有列都顯示正確,除了上面描述的那個。它只是保持不變 - 但是當我使用mousecursor選擇DataGridCell並再次單擊它時,突然發生期望的刷新。

所以我想這是一些簡單的東西我是缺少在這裏,但我不能找到它...提前

謝謝..

編輯:

在同時我能夠進一步找到問題:看起來,在修改了ObservableCollection的一個元素之後,屬於我的網格中綁定到源的標籤的相應ValueConverter就不會被調用。當我點擊單元格內的ValueConverter時,它應該會被調用。但它不會自動 - 那麼我該如何實現呢?請幫助:)

編輯:

結合:

<sdk:Label Content="{Binding Route.Legs, Converter={StaticResource IncomingTableRouteTripConverter}}" Margin="9,0,0,0" Style="{StaticResource TripLabelTemplate}" FontFamily="Arial" FontSize="10.667" Padding="0" Height="10" FontWeight="Bold" /> 

這是我ValueConverter的代碼: (但我不認爲轉換器的代碼與我的問題有什麼關係,我只是爲了完整性而在此發佈)

public override object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { 

     string trip = ""; 

     if (value != null) { 


      List<Leg> legs = (List<Leg>)value; 

      if (legs.Count >= 1) { 

       for (int i = 0; i <= legs.Count - 1; i++) { 

        trip += ((Leg)legs[i]).Start.ICAO + " - " + ((Leg)legs[i]).Stop.ICAO + " - "; 
       } 

       trip = trip.Substring(0, trip.Length - 2); 
      } 
     } 

     return trip; 
    } 

回答

2

對於Path通知中的所有節點都需要到位,因此擁有Route的類和擁有Legs的類都需要實現INPC

而且如果你將項目添加到列表Legs自然什麼都不會被更新,其實即使Legs屬性爲ObservableCollection<...>類型不會有問題的綁定引擎只關心INPC的。

所以如果你想綁定更新,如果集合發生了變化,你需要在每次修改包括Legs屬性時更新屬性(包括完整的引用替換)。

+0

你好H.B. :)你是對的,我錯過了它來添加一些代碼。我用一些代碼擴展了我的上述文章。但似乎額外的PATH關鍵字沒有帶來任何改變。我對此有了解嗎? – 2012-02-07 08:45:29

+1

@Marc:你已經有了一個路徑,加入'Path ='什麼都不會改變。 (我現在看不到你添加的代碼,可能會晚點) – 2012-02-07 08:47:55

+0

好的,謝謝你:) – 2012-02-07 08:49:37

0

如果你使用像

CONTENT = 「{綁定路徑=參數轉換= {StaticResource的SomeConverter}}」

那麼你的問題可能得到解決......

+0

你好:)請看我上面的擴展帖子.. – 2012-02-07 08:46:49

+0

ohh你沒有提及**路徑**所以我認爲給正確的代碼給傢伙可以減少他的困惑..;) – 2012-02-07 08:52:34

+0

嗯...所以你建議....? :-) – 2012-02-07 08:54:32