C# 如何设计用于编辑多个数据库表的窗口

C# 如何设计用于编辑多个数据库表的窗口,c#,wpf,datagrid,C#,Wpf,Datagrid,我有一个包含4个表的数据库。用户应该能够编辑、添加、删除每个表中的行。该表将显示在数据网格中。一个表包含1000-2000行,但其他表最多只有50行 是否有一种“更好”的方式显示4个数据网格,而不是为每个表使用TabControl和tab 用户要求该程序应类似于Excel 如果TabControl是一条路要走。我应该在启动时还是在用户选择选项卡时加载数据网格 <Window x:Class="Foo.MainWindow" xmlns="http://schemas.mic

我有一个包含4个表的数据库。用户应该能够编辑、添加、删除每个表中的行。该表将显示在数据网格中。一个表包含1000-2000行,但其他表最多只有50行

是否有一种“更好”的方式显示4个数据网格,而不是为每个表使用TabControl和tab

用户要求该程序应类似于Excel

如果TabControl是一条路要走。我应该在启动时还是在用户选择选项卡时加载数据网格

<Window
    x:Class="Foo.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:Foo"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="611"
    Height="401"
    mc:Ignorable="d">
    <Grid>

            <TabControl x:Name="tcControl" >
                <TabItem Header="FooTable1">
                    <Grid>
                        <DataGrid
                                x:Name="dataGrid1"
                                Margin="57,20,60,37"
                                AutoGenerateColumns="False"
                                CanUserAddRows="false"
                                EnableRowVirtualization="True"
                                ItemsSource="{Binding Path=FooTable1, Mode=TwoWay}"
                                RowDetailsVisibilityMode="VisibleWhenSelected"
                                RowEditEnding="laserDataDataGrid_RowEditEnding"
                                ScrollViewer.CanContentScroll="True"
                                ScrollViewer.HorizontalScrollBarVisibility="Auto"
                                ScrollViewer.VerticalScrollBarVisibility="Auto"
                                SelectionMode="Single"
                                SelectionUnit="FullRow">

                            <DataGrid.Columns>

                                <!-- ... -->
                            </DataGrid.Columns>
                        </DataGrid>
                    </Grid>
                </TabItem>
                <TabItem Header="FooTable2">
                    <Grid>
                        <DataGrid
                                x:Name="dataGrid2"
                                Margin="57,20,60,37"
                                AutoGenerateColumns="False"
                                CanUserAddRows="false"
                                EnableRowVirtualization="True"
                                ItemsSource="{Binding Path=FooTable2, Mode=TwoWay}"
                                RowDetailsVisibilityMode="VisibleWhenSelected"
                                RowEditEnding="laserDataDataGrid_RowEditEnding"
                                ScrollViewer.CanContentScroll="True"
                                ScrollViewer.HorizontalScrollBarVisibility="Auto"
                                ScrollViewer.VerticalScrollBarVisibility="Auto"
                                SelectionMode="Single"
                                SelectionUnit="FullRow">

                            <DataGrid.Columns>

                                <!-- ... -->
                            </DataGrid.Columns>
                        </DataGrid>
                    </Grid>
                </TabItem>
                <TabItem Header="FooTable3">
                    <Grid>
                        <DataGrid
                                x:Name="dataGrid3"
                                Margin="57,20,60,37"
                                AutoGenerateColumns="False"
                                CanUserAddRows="false"
                                EnableRowVirtualization="True"
                                ItemsSource="{Binding Path=FooTable3, Mode=TwoWay}"
                                RowDetailsVisibilityMode="VisibleWhenSelected"
                                RowEditEnding="laserDataDataGrid_RowEditEnding"
                                ScrollViewer.CanContentScroll="True"
                                ScrollViewer.HorizontalScrollBarVisibility="Auto"
                                ScrollViewer.VerticalScrollBarVisibility="Auto"
                                SelectionMode="Single"
                                SelectionUnit="FullRow">

                            <DataGrid.Columns>

                                <!-- ... -->
                            </DataGrid.Columns>
                        </DataGrid>
                    </Grid>
                </TabItem>
                <TabItem Header="FooTable4">
                    <Grid>
                        <DataGrid
                                x:Name="dataGrid4"
                                Margin="57,20,60,37"
                                AutoGenerateColumns="False"
                                CanUserAddRows="false"
                                EnableRowVirtualization="True"
                                ItemsSource="{Binding Path=FooTable4, Mode=TwoWay}"
                                RowDetailsVisibilityMode="VisibleWhenSelected"
                                RowEditEnding="laserDataDataGrid_RowEditEnding"
                                ScrollViewer.CanContentScroll="True"
                                ScrollViewer.HorizontalScrollBarVisibility="Auto"
                                ScrollViewer.VerticalScrollBarVisibility="Auto"
                                SelectionMode="Single"
                                SelectionUnit="FullRow">

                            <DataGrid.Columns>

                                <!-- ... -->
                            </DataGrid.Columns>
                        </DataGrid>
                    </Grid>
                </TabItem>
            </TabControl>
    </Grid>
</Window>


无论哪种方式都可以。你在征求意见(通常与“什么是……的最佳方式”问题相同)。你能描述一下这个问题吗?例如,“太慢了”。也许你是在要求(添加抽象概念等)。“应该看起来像Excel”-你坚持布局吗?我的问题是,我发现在一个选项卡控件中处理四个数据网格有点“混乱”。xaml文件的长度略大于500行。但我会在代码回顾中询问。非常感谢。请参见和(似乎与您的相同)
TabControl
。UserControls将使其不那么凌乱。谢谢