我有一個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;
}
你好H.B. :)你是對的,我錯過了它來添加一些代碼。我用一些代碼擴展了我的上述文章。但似乎額外的PATH關鍵字沒有帶來任何改變。我對此有了解嗎? – 2012-02-07 08:45:29
@Marc:你已經有了一個路徑,加入'Path ='什麼都不會改變。 (我現在看不到你添加的代碼,可能會晚點) – 2012-02-07 08:47:55
好的,謝謝你:) – 2012-02-07 08:49:37