WPF - 当项目添加到绑定集合时UI不更新

时间:2010-12-15 00:54:49

标签: wpf user-interface binding

我有一个通用的对象列表,我已将其绑定到自定义控件。在代码隐藏中,一切似乎都可以正常工作,但是我对集合所做的任何更改似乎都没有在UI中反映出来(即使它们在后面的所有代码中都能找到它)。

这是我的UI的XAML:

<controls:ControllableListView x:Name="lvSummaryCaseEvents" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3" Label="Case Events:" ItemsSource="{Binding CaseEvents}" AddButtonClicked="ControllableListView_AddButtonClicked">

我将项目添加到集合中的代码:

_caseScreen.CaseEvents.Add(caseEvent);
//after the line above executes, lvSummaryCaseEvents (in the debugger) shows the correct number of items and the items' values are all correct.  No change to the UI whatsoever

我的用户控件中的ItemSource属性:

public static readonly DependencyProperty ItemsSourceProperty = DependencyProperty.Register("ItemsSource", typeof(System.Collections.IList), typeof(ControllableListView));

public System.Collections.IList ItemsSource
{
    get
    {
        return this.GetValue(ItemsSourceProperty) as System.Collections.IList;
    }
    set
    {
        this.SetValue(ItemsSourceProperty, value);
    }
}

最后,生活在我的用户控件中的标准ListView的XAML绑定到上面列出的ItemsSource属性:

<ListView Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="4" Name="lvListView" ItemsSource="{Binding ItemsSource}" View="{Binding View}" SelectionChanged="lvListView_SelectionChanged" />

重申一下,当我第一次显示集合时,一切正常,但是当我向集合中添加项目时,UI并不反映所做的更改。

提前致谢,
桑尼

1 个答案:

答案 0 :(得分:2)

将您的收藏集更改为ObservableCollection<T>