Подтвердить что ты не робот

Как вы передаете данные в IValueConverter в XAML?

У меня есть 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 в этот конвертер. Как мне это сделать?

Спасибо.

4b9b3361

Ответ 1

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

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

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

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