Как программно добавить конвертер привязок в WPF ListView? - PullRequest
7 голосов
/ 07 июля 2010

У меня много проблем с поиском хорошего примера того, как программно создать, заполнить и оформить ListView.Каждый пример, который я нахожу, имеет тенденцию использовать много разметки XAML и минимальное количество C # для переключения, какой бит разметки выполняется.Это невозможно для меня, так как я не знаю ни составов столбцов, ни предполагаемых стилей во время компиляции.

То, что мне нужно, довольно тривиально - ListView, где будет определенная ячейка для данной строкикрасный, если значение отрицательное, или черный значения положительный.Однако какая это строка и какие это будут цвета, неизвестно до времени выполнения (достаточно динамического / программного примера).

То, что у меня есть (упрощенно), выглядит примерно так:

string[] columns = new string[] { "Test", "Test2" };
ListView lv = new ListView();

/* Add Columns (works */
GridView viewLayout = new GridView();
foreach (string colName in columns)
{
    viewLayout.Columns.Add(new GridViewColumn{ Header = colName });
}
lv.View = viewLayout;

/* Add Items (happy to go the .source path if it's easier) */
foreach (object d in GetData())
{
     lv.Items.Add(d);
}

/* Example style, fails */
lv.ItemContainerStyle.Setters.Add(
 new Setter(Control.BackgroundProperty, *how do you connect the IValueConverter*)
);

1 Ответ

35 голосов
/ 07 июля 2010

Используйте Binding, установите свойство Converter;)

new Binding() { Converter = new MyAwesomeConverter() }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...