我相信这不是ExpandoObject
不实施的问题INotifyPropertyChanged
(因为它确实)。
我在想的是你的问题是INotifyCollectionChanged
转换器的组合和使用。发生的情况是,当属性更改时会调用转换器,但在集合更改时不会调用它们。当从绑定集合中添加或删除项目时,这将导致 UI 不更新。
您可以查看这些问题以获取有关此问题的更多信息:
您可以通过在转换器中设置断点并查看添加新项目时是否调用它来查看这是否真的是您的问题。如果这确实是问题所在,您可以尝试在不使用转换器的情况下解决此问题,或者使用MultiValueConverter
也将接收该Count
属性(仅充当触发器)的 a ,如下所示:
<DataGrid>
<DataGrid.ItemsSource>
<MultiBinding Converter="{local:MyConverter}">
<Binding Path="Items" />
<Binding Path="Items.Count" />
</MultiBinding>
</DataGrid.ItemsSource>
</DataGrid>
public class MyConverter : MarkupExtension, IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// Your converter logic which will use values[0] (the bound collection).
// Ignore anything else in the values[] array.
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}