Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Silverlight RIA中绑定到datagrid的itemsource时NotifyPropertyChanged_C#_Silverlight_Data Binding_Silverlight 4.0_Ria - Fatal编程技术网

C# 在Silverlight RIA中绑定到datagrid的itemsource时NotifyPropertyChanged

C# 在Silverlight RIA中绑定到datagrid的itemsource时NotifyPropertyChanged,c#,silverlight,data-binding,silverlight-4.0,ria,C#,Silverlight,Data Binding,Silverlight 4.0,Ria,我在silverlight项目中有一个文本框和一个数据网格。如果datagrid中的项计数为0或datagrids itemssource中的字段总和为0,则应启用文本框 我已经将文本框的isEnabled值绑定到datagrids ItemsSource.SourceCollection,它提供了一个IEnumerable。我制作了一个转换器,将这个数据模型转换成布尔 当我打开silverlight页面并绑定datagrid时,转换器会运行,我所做的一切都会按预期进行,但如果我更改sum字段或

我在silverlight项目中有一个文本框和一个数据网格。如果datagrid中的项计数为0或datagrids itemssource中的字段总和为0,则应启用文本框

我已经将文本框的isEnabled值绑定到datagrids ItemsSource.SourceCollection,它提供了一个IEnumerable。我制作了一个转换器,将这个数据模型转换成布尔

当我打开silverlight页面并绑定datagrid时,转换器会运行,我所做的一切都会按预期进行,但如果我更改sum字段或在datagrid中添加/删除行,则不会发生任何事情

我猜这与我的数据模型上的notify属性更改有关,但我不知道


如何解决这个问题有什么想法吗

是,当绑定到对象的子属性时,需要该特定属性的PropertyChanged事件,以便目标更新其值

在您的示例中,ItemsSource需要引发property SourceCollection的PropertyChanged事件

您可以做的是绑定到将触发的ItemsSource,然后在转换器中使用Sourcecollection值

例如:


代码:

\u items=新的ObservableCollection();
_添加(newsomeclass(){Name=“a”});
_添加(newsomeclass(){Name=“b”});
_添加(newsomeclass(){Name=“c”});
数据上下文=_项;
私有无效测试按钮\u单击(对象发送方,路由目标)
{
_添加(newsomeclass(){Name=“ha”});
}

我问了类似的问题,正如Luc回答的那样,您需要INotifyPropertyChanged事件实现,否则不会发生项目更改。

这是一个RIA数据模型,它从实现InotifyPropertyChanged的“实体”中得到了增强。请在转换器中设置一个断点并调试代码,看看在更改集合时是否调用了转换器?将绑定更改为ItemsSource不会更改任何内容。我对其进行了编辑,以使自己更清楚。+别忘了使用observableCollection..我使用的是PagedCollectionViews。这可能与此有关吗?我使用带有PagedCollectionView的Luc解决方案创建了一个示例,它成功了。看看
    <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"});

    }