我有一個要求,在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