2011-02-17 56 views
0

我在silverlight項目中有一個文本框和一個數據網格。如果DataGrid中的項目數爲0或字段的DataGrid中總和的ItemsSource = 0當綁定到Silverlight RIA中的datagrid的itemsource時NotifyPropertyChanged

我綁定的文本框的值的IsEnabled在DataGrid中ItemsSource.SourceCollection這使我的文本框應該啓用一個IEnumerable。我製作了一個轉換器,將此數據模型轉換爲布爾值。

當我打開我的silverlight頁面並綁定數據網格時,轉換器運行並且我按預期工作,但是如果我更改數據網格中的總和字段或添加/刪除行,則不會發生任何反應。

我猜它與通知我的datamodel屬性更改有關,但我不知道。

有關如何解決這個問題的想法?

回答

0

是的,當您綁定到對象的子屬性時,您需要該特定屬性的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"}); 

    } 
+0

將綁定更改爲ItemsSouce不會改變任何內容。 – olve 2011-02-18 09:46:38

+0

我編輯它讓你更清晰。 +不要忘記使用observableCollection ..我使用PagedCollectionViews。 – 2011-02-18 10:41:06

相關問題