我有一个WPF数据网格,通过数据绑定填充。此列表包含不同的列。我有两种类型的行,一种类型包含行中的所有列,另一种类型应跨越所有列中的一列。
有没有一种简单的方法使这成为可能?(也许使用ListView而不是DataGrid?)
我附上了一个屏幕截图,显示它应该是什么样子:
我现在尝试使用Item Template Selector:
我的资源中的模板(这两个模板不正确,但它们仅用于测试!)
我在SelectTemplate的第一行放置了一个断点,但从未被调用!
有没有一种简单的方法使这成为可能?(也许使用ListView而不是DataGrid?)
我附上了一个屏幕截图,显示它应该是什么样子:
我现在尝试使用Item Template Selector:
我的资源中的模板(这两个模板不正确,但它们仅用于测试!)
<DataTemplate x:Key="commentTemplate">
<TextBlock Text="{Binding}"/>
</DataTemplate>
<DataTemplate x:Key="normalTemplate">
<Image Source="{Binding }" />
</DataTemplate>
<WPFVarTab:VarTabRowItemTemplateSelector
NormalRowsTemplate="{StaticResource normalTemplate}"
CommentRowsTemplate="{StaticResource commentTemplate}"
x:Key="vartabrowItemTemplateSelector" />
以及我的数据网格:
<DataGrid AutoGenerateColumns="False" Margin="0,22,0,22"
Name="dataGrid" Grid.RowSpan="2" CanUserAddRows="True"
RowBackground="Azure" AlternatingRowBackground="LightSteelBlue"
ItemTemplateSelector="{StaticResource vartabrowItemTemplateSelector}" >
以及我的模板选择器:
public class VarTabRowItemTemplateSelector : DataTemplateSelector
{
public DataTemplate NormalRowsTemplate { get; set; }
public DataTemplate CommentRowsTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
S7VATRow vRow = item as S7VATRow;
if (vRow == null || string.IsNullOrEmpty(vRow.Comment))
return NormalRowsTemplate;
return CommentRowsTemplate;
}
}
我在SelectTemplate的第一行放置了一个断点,但从未被调用!
SelectTemplate
从未被调用。如果你还没有放弃,请给VarTabRowItemTemplateSelector
类添加一个构造函数,看看它是否被调用了?(一个空构造函数就可以了。) - Vlad