2012-04-04 1 views
1

У меня есть класс IValueConverter, который используется для изменения цвета фона ячейки datagrid, если значение в самой ячейке больше 0 (не важно).Как передать параметр из кода в ValueConverter

Теперь я хочу создать несколько экземпляров окна, содержащего этот файл данных. В зависимости от некоторых значений, определенных в экземпляре Window, IValueConverter должен цвет фона фона ячейки данных или нет. Таким образом, IValueConverter должен выполнять другое задание в зависимости от экземпляра класса Window.

Проблема в следующем: я не могу передать ConverterParameter в XAML, потому что этот параметр будет исправлять все для всех экземпляров окна. Я думал о передаче соответствующей информации в класс IValueConverter программно (что требуется), но как я могу получить доступ к экземпляру класса IValueConverter? Мое текущее решение: я поместил некоторые статические переменные в класс IValueConverter, поэтому я могу получить к ним доступ из экземпляра класса Window. Но это решение плохое, потому что переменные являются статическими, поэтому ValueConverter ведет себя одинаково в каждом из экземпляров окна.

Кто-нибудь знает, как программно получить доступ к экземпляру IValueConverter из экземпляра Window? Спасибо!

ответ

1

Поскольку вы не можете привязка к ConverterParameter, вы можете один из двух вещей (также см this SO question):

  1. Добавьте свойство зависимостей для вашей модели представления и сделать конвертер многозначного
  2. Пропустите модель всего вида в ваше выражение для привязки
+0

@Phillip Schmid К сожалению, я не знаю, как управлять вторым предложением (я не знаю синтаксиса). Как передать всю модель представления в мое обязательное выражение? Означает ли это, что я могу получить доступ к модели представления (т. Е. DataContext) в ValueConverter? Это было бы хорошим способом ... – manton

+0

Значение = {Переплет} без какого-либо пути означает, что вы передаете весь DataContext. Также, если вы добавите конвертер, вы передадите DataContext в конвертер – pluka