[英]Draw resizable table in WPF
我的意思是我应该如何显示我的数据结构,以便可以像使用表一样使用它? 我想要一个具有行和列的表,可以动态地添加和删除,但其余的应该看起来像一个表。
现在像IList>一样表示它,因为我应该像之前说的那样调整它的大小。 但是现在我想在DataGrid中显示它,并且能够具有行,同位格并可以使用“单元”。 但是我无法正确绑定它,它不显示任何内容,每行仅显示一个空单元格。
我该怎么办? 还是mby使用数组并在每次添加行/列之后调整它们的大小?
请指教。
现在我有了这个:
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>();
...
_
<ListView ItemsSource="{Binding DataRowList}" Name="DataListView">
<ListView.ItemTemplate>
<DataTemplate>
<ListView ItemsSource="{Binding}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我希望能够创建类似于此的东西,但是具有2向绑定...
您似乎要的是TreeView而不是ListView,因为您有一个类似树的数据结构。
如果您不想使用TreeView,建议您使用带有小技巧的简单ListView。 那就是您可以展开一个Expander,该扩展器将添加或删除父项下的项目(带有缩进的假树外观),并且仍然会调整列中所有单元的大小。
顺便说一句不要忘记定义列
方法如下:
<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>
如果您希望实现该扩展器的欺骗行为,建议您监听事件OnExpanded并添加或删除所需的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.