如何以编程方式将绑定转换器添加到WPF ListView?

时间:2010-07-07 09:03:17

标签: c# wpf listview

我在查找如何以编程方式创建,填充和样式化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 个答案:

答案 0 :(得分:35)

使用Binding,设置Converter属性;)

new Binding() { Converter = new MyAwesomeConverter() }