Конвертер с коллекцией - PullRequest
       12

Конвертер с коллекцией

0 голосов
/ 14 октября 2011

в WPF, в моем XAML у меня есть dataGrid, связанный с IEnumerable. Предметы коллекции имеют свойство Sealed. Чтобы знать, если заказ запечатан или нет. Поэтому я сделал конвертер, чтобы переключать его из одного списка в другой. Хотя, когда я изменяю коллекцию извне, конвертер не вызывается. Но если я закрою и снова открою окно, оно будет работать нормально.

      public object Convert(object value, Type targetType, object parameter,   System.Globalization.CultureInfo culture)
    {
        var collection = (ObservableCollection<OrderEntry>)value;
        var viewSource = new CollectionViewSource()
        {
            Source = collection,
        };
        viewSource.Filter += new FilterEventHandler(FilterInSealedOrderEntries);
        return viewSource.View;
    }

    private static void FilterInSealedOrderEntries(object sender, FilterEventArgs e)
    {
        var orderEntry = e.Item as OrderEntry;
        e.Accepted = orderEntry != null && orderEntry.Sealed;
    }

"{Binding Path=OrderEntries.Collection, Converter={StaticResource ViewNotSealedOrderEntryCollectionValueConverter}}"

В моем Xaml.

Всякий раз, когда я меняю свойство, вызывается collectionContentChanged, но не конвертер, есть идеи, что я делаю не так?

Спасибо, я прокомментирую, если это не достаточно ясно.

Ответы [ 2 ]

1 голос
/ 14 октября 2011

Поскольку указание ValueConverter в Binding для DataGrid ItemsSource будет вызвано только при начальном заполнении элементов.

0 голосов
/ 14 октября 2011

Интерфейс IValueConverter также содержит метод ConvertBack. Я не вижу этот метод в вашем коде

...