直接属性绑定更新,DataContext绑定没有

时间:2015-02-11 21:17:00

标签: wpf xaml data-binding

我将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

这只能部分工作 - 最初设置的值正确,但在集合更改时从不更新。

我在这里缺少什么?我怎样才能使用集合中的更改来更新它?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

正如我在对原始问题的评论中所述,您可以将TextBlock.Text依赖项属性直接绑定到集合的Count属性,因此您不需要任何转换器。由于ObservableCollection实现会为PropertyChanged属性引发Count事件,因此您应该更新绑定目标。

<TextBlock DataContext="{Binding SubViewModel.Collection}" Text="{Binding .Count}" />
相关问题