我有一个要求,在WPF中生成一个“报表”,它只是一个网格。WPF动态设计单元格
然而,列和样式规则(例如,“红色如果低于零值”)为该网格是在编译时未知的。
有数百个这样的问题,我必须看过超过半数的人,但我不能找到解决这个要求这将是微不足道的WinForms。
我设法通过设置ListView控件的ItemContainerStyle样式整行,但我不能设法得到这种专注于单个细胞。
因此,我正在尝试CellTemplate方法,但是这会引发错误({"Child with Name '{x:Type ListViewItem}' not found in VisualTree."}
),当然当我使用DisplayMemberBinding时,CellTemplate根本就没有被调用。
当它被传递的值越来越整个行,而不仅仅是单元格的值,所以,这可能是有用的信息,我的转换器。
GridView viewLayout = new GridView();
for (int i=0; i<columns.Length; i++)
{
ColumnDisplaySettings col = columns[i];
var g = new GridViewColumn()
{
Width = col.Width,
//DisplayMemberBinding = "[" + i + "]" /* Have to omit this for CellTemplate */
};
if (i == 0)
{
g.CellTemplate = new DataTemplate();
var t = new DataTrigger();
t.Binding = new Binding("[0]");
t.Value = "0";
var b = new Binding() { Converter = new MyBkColorConverter() };
t.Setters.Add(new Setter(Control.BackgroundProperty, b,
"{x:Type ListViewItem}")); /* Error here */
g.CellTemplate.Triggers.Add(t);
}
viewLayout.Columns.Add(g);
}
lv.View = viewLayout;
我遇到DataTemplateSelectors在我的搜索,因此,如果使用这些没有任何已知的XAML存在一个有用的参考,那么我也能欣赏。
感谢您提供的任何帮助。
在这种情况下,TargetType需要一个字符串,而不是一个Type。 – 2010-07-11 14:10:27
'哦,你正在试图设置背景属性为一个类型< - 好吧,非常感谢你得到我想要的东西,所以会喜欢澄清。 – 2010-07-11 14:12:39
我可以在这里看到:http://msdn.microsoft.com/en-us/library/ms587944.aspx第三个参数是“targetName”,而不是“targetType”。 Style有一个目标类型,setter正在寻找'setter的'子节点的名字'。将在10秒内更新答案.. – 2010-07-11 14:12:46