绑定到ObservableCollection的新实例<t>不会更新视图

时间:2017-06-01 16:54:57

标签: xaml uwp observablecollection

在我的UWP应用程序中,当我清除绑定集合并再次填充它时,我的绑定视图会更新,但是当我实例化新集合时它不会更新

这会更新视图:

if (CurrentPivotHeader != "author") AuthorFacets.Clear();

这不会更新视图:

if (CurrentPivotHeader != "author") AuthorFacets = new ObservableCollection<IFacet>();

这是我的XAML:

<ListBox ItemsSource="{x:Bind AuthorFacets , Mode=OneWay}"
                         Name="AuthorListBox"
                         SelectionMode="Multiple"
                         SelectionChanged="AuthorListBox_SelectionChanged">
                    <ListBox.ItemTemplate>
                        <DataTemplate x:DataType="local:IFacet">
                            <StackPanel>
                                <TextBlock Text="{x:Bind read}" FontSize="10"></TextBlock>
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

由于其他一些问题,我无法使用Clear()方法。有没有办法更新实例化视图?

1 个答案:

答案 0 :(得分:1)

您需要实现INotifyPropertyChanged接口并为PropertyChanged属性举起AuthorFacets事件:

public sealed partial class MainPage : Page, INotifyPropertyChanged
{
    ...

    private ObservableCollection<IFacet> _authorFacets;
    public ObservableCollection<IFacet> AuthorFacets
    {
        get { return _authorFacets; }
        set { _authorFacets = value;  RaisePropertyChanged(nameof(AuthorFacets)); }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void RaisePropertyChanged(string name)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(name));
        }
    }
}