繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM