WPF dataGrid(或ListView)通过绑定(bind)填充,不同的行模板

标签 wpf templates data-binding datagrid

我有一个通过 DataBinding 填充的 WPF dataGrid。此列表包含不同的列。我有两种类型的行,一种类型包含行中的所有列,另一种类型应该跨越所有列的一列。

有没有一种简单的方法可以使这成为可能? (也许使用 ListView 而不是 DataGrid?)

我附上了一个截图,它应该是什么样子的:

enter image description here

我现在尝试使用项目模板选择器:

我在资源中的模板(这两个模板不正确,但它们仅用于测试!)

    <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 的第一行停了下来,但这从来没有被调用过!

最佳答案

您可以使用item template selectorListView .或与 DataGrid ,它也在那里可用。 Here是一个例子。

关于WPF dataGrid(或ListView)通过绑定(bind)填充,不同的行模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5416946/

相关文章:

wpf - 将 WPF UserControl 绑定(bind)到 View 模型和隐藏代码

wpf - 无法将所有者属性设置为已关闭的窗口 : Exception

c# - WPF ComboBox SelectionItemBox 提示字符串

c++11 获取第一个(第二个等...)参数的类型,类似于 result_of

wpf - 文本框双向绑定(bind)未触发

c# - 使用 MVVM 模式中的 DXGrid 绑定(bind)/编辑数据的最佳选择是什么?

c++ - C++中的模板模板参数。使用实例

python - Python 的模板系统或语言(主要是 HTML)

android - BR 文件的数据绑定(bind)问题

c# - BindingSource 上的 EndEdit 更新 DataTable,但 rowstate 仍未改变