2

CollectionViewSourceComboBox でフィルターを更新する方法を考えていました。次のコードがあります。

 <CollectionViewSource x:Key="cvsCars" 
                       Source="{Binding Source={StaticResource odpCars}}">
 <ComboBox Name="cbxMake" Margin="5" IsEnabled="False" />

ComboBoxにはある種のSelectionChangedイベントが必要だと確信していますが、このコードでそれを機能させる方法がわかりません。

private void MakeFilterOn(object sender, RoutedEventArgs e)
{
    cbxMake.IsEnabled = true;
    cvsCars.Filter += new FilterEventHandler(cvsCars_Filter);
}

void cvsCars_Filter(object sender, FilterEventArgs e)
{
    Car car = e.Item as Car;
    if (car != null)
    {
        if (car.Maker.ToString() == cbxMake.SelectedItem.ToString())
        {
            e.Accepted = true;
        }
        else
        {
            e.Accepted = false;
        }
    }
}

どんなアドバイスでも大歓迎です。

にはCollectionViewSourceが取り込まれますObjectDataProvider。更新は ListBox に適用されます。MakeFilterOn は CheckBox です。

4

1 に答える 1

2

CollectionViewSource のビューを更新する必要があります...そのため、コンボボックスの SelectionChanged イベントのハンドラーで、cvs を更新します。

cvsCars.View.Refresh();

WPF のデータバインディング機能を調べてから、後で Model View ViewModel (MVVM) の「パターン」を調べることができます。そうすれば、コンボボックスSelectedItemをウィンドウのプロパティにバインドできDataContext、SelectionChanged イベントを処理する必要がなくなります。

于 2012-12-05T22:06:48.750 に答える