Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF中绘制可调整大小的表格_C#_.net_Wpf_Data Binding - Fatal编程技术网

C# 在WPF中绘制可调整大小的表格

C# 在WPF中绘制可调整大小的表格,c#,.net,wpf,data-binding,C#,.net,Wpf,Data Binding,我的意思是,我应该如何显示我的数据结构,因为我可以像处理表一样处理它? 我希望有一个可以动态添加和删除行和列的表,但在其余的表中应该看起来像一个表 现在它被表示为IList>,因为我应该调整它的大小,正如我前面所说的。但现在我想在DataGrid中显示它,并且能够有行、coulmn和使用“Cells”。但我不能正确绑定它,它不显示任何内容,每行只显示一个空单元格 我该怎么办?还是在每次添加行/列后使用数组并调整其大小 请给我一些建议 现在我有一个: private void MainWi

我的意思是,我应该如何显示我的数据结构,因为我可以像处理表一样处理它? 我希望有一个可以动态添加和删除行和列的表,但在其余的表中应该看起来像一个表

现在它被表示为IList>,因为我应该调整它的大小,正如我前面所说的。但现在我想在DataGrid中显示它,并且能够有行、coulmn和使用“Cells”。但我不能正确绑定它,它不显示任何内容,每行只显示一个空单元格

我该怎么办?还是在每次添加行/列后使用数组并调整其大小

请给我一些建议

现在我有一个:

    private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
    {
        var storage = new Storage();
        storage.Data.Add(new DataRow("Bla-bla")
                     {
                         new DataEntity() {Text = "bla-bla", Forces = new[] {ForceEnum.AA}},
                         new DataEntity() {Text = "bla-bla", Forces = new[] {ForceEnum.UA}}
                     });
        DataListView.DataContext = new StorageModel(storage);
    }

public class StorageModel
{
    public StorageModel()
    {

    }

    public StorageModel(IStorage storage)
    {
        DataRowList = new ObservableCollection<DataRow>(storage.Data);
    }

    public ObservableCollection<DataRow> DataRowList
    {
        get;
        set;
    }
}
public class DataRow : IList<DataEntity>
{
    public string Name { get; private set; }
    private readonly List<DataEntity> _list = new List<DataEntity>();
...
private void主窗口\u已加载(对象发送方、路由目标方)
{
var storage=新存储();
storage.Data.Add(新数据行(“Bla-Bla”)
{
new DataEntity(){Text=“bla bla”,Forces=new[]{ForceEnum.AA},
new DataEntity(){Text=“bla bla”,Forces=new[]{ForceEnum.UA}
});
DataListView.DataContext=新的存储模型(存储);
}
公共类存储模型
{
公共存储模型()
{
}
公共存储模型(IStorage存储)
{
DataRowList=新的ObservableCollection(storage.Data);
}
公共可观测收集数据行列表
{
得到;
设置
}
}
公共类数据行:IList
{
公共字符串名称{get;private set;}
私有只读列表_List=new List();
...
_



我希望能够创建类似的东西,但使用双向绑定…

您似乎要求使用TreeView而不是ListView,因为您有一个类似于树的数据结构

如果你不想使用树状视图,我建议你使用一个简单的列表视图和一个小技巧。也就是说,你可以分解一个扩展器,它可以在父视图下添加或删除项目,并以缩进的方式伪造树状视图,但列中的所有单元格仍然会一起调整大小

顺便说一句,别忘了定义列

以下是如何:

<ListView Margin="10" Name="lvUsers">
        <ListView.View>
                <GridView>
                        <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" />
                        <GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" />
                        <GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" />
                </GridView>
        </ListView.View>
</ListView>

如果您希望实现扩展器技巧行为,我建议您收听EventOneExpanded并添加或删除所需的行

<ListView Margin="10" Name="lvUsers">
        <ListView.View>
                <GridView>
                        <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" />
                        <GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" />
                        <GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" />
                </GridView>
        </ListView.View>
</ListView>