У меня есть требование генерировать «отчет» в WPF, который является просто сеткой.
Однако столбцы и правила оформления (например, «Красный, если значение меньше нуля») для этой сетки неизвестны во время компиляции.
Есть сотни подобных вопросов, и я, должно быть, прочитал более половины из них, но я не могу найти решение этого требования, которое было бы тривиально в WinForms.
Мне удалось стилизовать всю строку, установив ItemContainerStyle объекта ListView, но мне не удалось заставить его сосредоточиться на одной ячейке.
В связи с этим я сейчас пытаюсь использовать подход 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, я был бы также признателен за это.
Спасибо за любую помощь, которую вы можете предоставить.