Параметры для IMultiValueConverter всегда одинаковы? - PullRequest
2 голосов
/ 25 августа 2011

У меня есть простой преобразователь, унаследованный от IMultiValueConverter, который принимает 2 параметра (в массиве values).

public class TicketNoConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        var dataContext = values[0] as ViewModel;
        var data = values[1] as String;
    }
}

Я знаю, что мой преобразователь является одиночным, но несмотря на то, что ViewModel содержит различныеданные мой конвертер всегда получал один и тот же ViewModel экземпляр (первый параметр привязки) и один и тот же Remarks текст.

При использовании этого XAML Remarks правильно отображается с правильным значением.

<TextBlock
    Grid.Column="1"
    Style="{StaticResource EditorValueStyle}"
    Text="{Binding ViewModel.Remarks}" />

Однако, если я передам Remarks в качестве параметра привязки, он будет использовать те же значения параметров, что и первый ViewModel, переданный из первого загруженного элемента.Вот как выглядит XAML:

   <ContentControl Grid.Column="1">
        <ContentControl.Content>
            <MultiBinding Converter="{StaticResource TicketNo}">
                <Binding Path="" />
                <Binding Path="ViewModel.Remarks" />
            </MultiBinding>
        </ContentControl.Content>
    </ContentControl>

Вот XAML, который я использую для регистрации моего конвертера:

<local:TicketNoConverter x:Key="TicketNo" />

Копаем в эту проблему еще 2 параметра, переданных в MultiBinding - это всегда 2 значения из предыдущего ViewModel, который был загружен.

Как я могу обеспечить использование текущего экземпляра ViewModel?

1 Ответ

2 голосов
/ 25 августа 2011

После настройки привязок я не верю, что они обновляются, если ваш контекст данных не изменится. Установлен ли контекст данных для представления для модели представления или для самого себя? Если он не настроен на модель представления - необходимо принудительно обновить привязки.

Есть ли у вас событие INotify при изменении модели представления?

...