解决数据网格填充问题的最佳方法

时间:2014-10-23 13:45:47

标签: c# wpf datagrid deserialization

如果有人可以帮我解决这个问题,我会非常感激,这已经过去了4天,而且,凭借我对c#的了解,我无法解决这个问题。

我需要一些指导。

所以我反序列化一个XML文档,我有一个这样的结构:

public class ServiceConfig
{
    public List<DatabaseDescriptor> Databases { get; set; }  
}

public class DatabaseDescriptor
{
    [XmlElement("Name")]
    public string Name { get; set; }
    public List<Table> Tables { get; set; }        
}

public class Table
{  
    [XmlElement("ID")]
    public string ID { get; set; }
    [XmlElement("TableName")]
    public string TableName { get; set; }
}
public xml.ServiceConfig xmlData { get; set; }

我经常挣扎,我尝试过Datagridviews,Datatables等等,这显然很简单。

我有一个从DatabaseDescriptor对象填充的数据网格,当我点击数据库的单元格时,T应该从Table对象中获取它的表。

我需要能够添加表,因为我需要将数据存储在内存中,然后最后需要再次序列化为xml。

如何为每个数据库获取相应的数据表? 如果你能帮助我,请避免讽刺或讽刺的评论。

1 个答案:

答案 0 :(得分:1)

你真正在努力的是什么? WPF中数据结构的可视化表示? 如果您尝试以某种有意义的方式显示子元素,则可以使用TreeView,如下所示:

<TreeView ItemsSource="{Binding Databases}">
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type myTypes:DatabaseDescriptor}" ItemsSource="{Binding Path=Tables}">
            <TextBlock Text="{Binding Name}" />
        </HierarchicalDataTemplate>
        <DataTemplate DataType="{x:Type myTypes:Table}">
            <TextBlock Text="{Binding TableName}" />
        </DataTemplate>
    </TreeView.Resources>
</TreeView>

或者使用指定DataGrid的{​​{1}}?或者甚至是两个单独的DataTemplate控件,因此第二个控件在行选择另一个时显示子元素。