[英]NotifyPropertyChanged when binding to itemsource of datagrid in Silverlight RIA
我在Silverlight項目中有一個文本框和一個數據網格。 如果datagrid中的項目計數為0或datagrids itemssource中的字段總和= 0,則應啟用文本框。
我已經將文本框的isEnabled值綁定到datagrids ItemsSource.SourceCollection,這給了我IEnumerable。 我做了一個轉換器,將這個數據模型轉換為bool。
當我打開silverlight頁面並綁定datagrid時,轉換器將運行,並且一切都按預期工作,但是如果我更改sumgrid字段或在datagrid中添加/刪除行,則不會發生任何事情。
我猜想這與我的數據模型上的通知屬性更改有關,但是我不知道。
關於如何解決這個問題有什么想法嗎?
是的,當您綁定到對象的子屬性時,您需要該特定屬性的PropertyChanged事件,以便目標更新其值。
在您的示例中,ItemsSource需要引發屬性SourceCollection的PropertyChanged事件。
您可以做的是綁定到ItemsSource,這將被觸發,然后在您的轉換器中使用Sourcecollection值。
例如:
<sdk:DataGrid Name="dg" ItemsSource="{Binding}" AutoGenerateColumns="True" VerticalAlignment="Top"/>
<TextBox Text="{Binding ElementName=dg, Path=ItemsSource.Count}" VerticalAlignment="Bottom" HorizontalAlignment="Right"/>
碼:
_items = new ObservableCollection<SomeClass>();
_items.Add(new SomeClass() { Name = "a" });
_items.Add(new SomeClass() { Name = "b" });
_items.Add(new SomeClass() { Name = "c" });
DataContext = _items;
private void testButton_Click(object sender, RoutedEventArgs e)
{
_items.Add(new SomeClass(){Name = "ha"});
}
我問了類似的問題,正如Luc回答的那樣,您需要INotifyPropertyChanged事件實現,否則將不會發生項目更改。 如何基於SL4中另一個單元格上的內容使datagrid中的單元格變為只讀?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.