我在查找如何以编程方式创建,填充和样式化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*)
);
答案 0 :(得分:35)
使用Binding,设置Converter属性;)
new Binding() { Converter = new MyAwesomeConverter() }