簡體   English   中英

在Silverlight RIA中綁定到數據網格的項源時,NotifyPropertyChanged

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM