簡體   English   中英

對CollectionItem.ObservableCollection使用CollectionViewSource

[英]Using CollectionViewSource for SelectedItem.ObservableCollection

我試圖讓CollectionViewSource為SelectedItem對象的ObservableCollection工作,但是我沒有得到我所期望的。 ListView沒有使用SelectedItem屬性更改更新的項目。

我有一個帶有SelectedCar對象的ObservableCollection<Car> Cars ,該對象綁定到ObservableCollection所附加的ListView的SelectedItem屬性。 一切都很好。

Car類具有ObservableCollection<string> Tyres ,這是此處要關注的對象。

從這里,我想將另一個ListView的ItemsSource綁定到SelectedCar.Tyres對象。 最初, SelectedCar為null,因為在原始Cars ListView中沒有選擇任何內容。 我在這里使用ICollectionView的原因是因為我需要在Tires ListView上完成過濾。

在我的ViewModel中,我已將ICollectionView聲明為:

private ICollectionView tyreCollectionView;
public ICollectionView TyreCollectionView
{
    get
    {
        return this.tyreCollectionView;
    }
}

並且,在SelectedCar的Setter中,我這樣做:

this.tyreCollectionView = CollectionViewSource.GetDefaultView(value.Tyres);
this.tyreCollectionView.Filter += this.FilterByTyreName;

對於XAML,有問題的ListView如下綁定到ICollectionView。

<ListView ItemsSource={Binding YCollectionView}/>

我也嘗試調用this.tyreCollectionView.Refresh()但這也沒有做任何事情。 ListView沒有填充任何結果。 當我嘗試調試SelectedCar setter的代碼時,可以看到ICollectionView確實顯示了value.Tyres的項目,只是這些值未出現在ListView中。

我無法在MainViewModel的構造函數中初始化yCollectionView ,因為在此階段, SelectedCar對象仍為null,並且執行諸如CollectionViewSource.GetDefaultView(this.SelectedCar.Tyres)將引發NullReferenceException

誰能指導我這個問題? 非常感謝 :)

根據評論,答案是這樣的YCollectionView屬性的實現NotifyPropertyChanged

private ICollectionView tyreCollectionView;    
public ICollectionView TyreCollectionView
{
    get
    {
        return this.tyreCollectionView;
    }
    set
    {
        this.tyreCollectionView = value; NotifyPropertyChanged( "TyreCollectionView" );
    }
}

#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
protected void NotifyPropertyChanged( String info )
{
    if ( PropertyChanged != null )
    {
        PropertyChanged( this, new PropertyChangedEventArgs( info ) );
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM