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