我将Text
的{{1}}属性绑定到TextBlock
属性,该属性是ViewModel属性的属性;通过此ObservableCollection
:
ValueConverter
当集合使用以下XAML更改时,此工作正常并正确更新:
public class EnumerableToCountConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (null == value ? 0 : ((IEnumerable<object>)value).Count());
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
现在,因为我还需要其他地方的引用,我希望将集合作为控件<TextBlock Text="{Binding SubViewModel.Collection, Converter={StaticResource EnumerableToCountConverter}}" />
并使用相对绑定路径:
DataContext
这只能部分工作 - 最初设置的值正确,但在集合更改时从不更新。
我在这里缺少什么?我怎样才能使用集合中的更改来更新它?
感谢您的帮助!
答案 0 :(得分:1)
正如我在对原始问题的评论中所述,您可以将TextBlock.Text
依赖项属性直接绑定到集合的Count
属性,因此您不需要任何转换器。由于ObservableCollection
实现会为PropertyChanged
属性引发Count
事件,因此您应该更新绑定目标。
<TextBlock DataContext="{Binding SubViewModel.Collection}" Text="{Binding .Count}" />