Как вы передаете данные в IValueConverter в XAML? - PullRequest
12 голосов
/ 12 июля 2009

У меня есть IValueConverter, работа которого заключается в преобразовании BlockId в ConditionLabel. Проблема в том, что мой объект Model - это то, что обладает умом для фактического преобразования. Мой код выглядит так до сих пор ...

public class BlockIdToConditionLabelConverter : IValueConverter
{
    private Model _model;

    public BlockIdToConditionLabelConverter(Model model)
    {
        _model = model;
    }

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        int blockId = (int)value;
        return _model.BlockIdToConditionLabel(blockId);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return Binding.DoNothing;
    }
}

В данный момент я создаю статический ресурс в ResourceDictionary, как этот (и позже ссылаюсь на него в DataTemplate):

<local:BlockIdToConditionLabelConverter
    x:Key="_blockIdToConditionLabelConverter" />

Проблема в том, что мне нужен способ передать мой объект Model в этот конвертер. Как бы я это сделал?

Спасибо.

1 Ответ

7 голосов
/ 12 июля 2009

Это классическая проблема с преобразователями значений.

Если вы используете шаблон MVVM, вы можете решить эту проблему, выполнив преобразование внутри ViewModel вашей модели.

Если нет, вы можете взглянуть на это сообщение на форумах MSDN . (ответ от Сэма Бента - MSFT)

Цель состоит в том, чтобы использовать мультисвязывание для передачи модели в конвертер, в этом случае передать DataContext.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...