一个根据菜单选择显示不同 DataGrid 的 WPF Window?

One WPF Window that displays different DataGrid's based on Menu selection?

我想根据 Menu 个选择在一个 'DataGrid' 中显示不同的 DataSource(SQL)个查询。我是不是看错了 UserControl 树?这将如何实施?

编辑: 我终于找到了 ,它似乎很好地回答了我的问题,或者至少稍微修改了我的问题。所以一个 Menu 是列出所有可用的 "Parts"。另一个 MenuMenuItems 对应于位置,并最终对应于每个位置的所述零件的库存。目前,我正在为每个 MenuItem 使用 Click 处理程序,并为部件和每个位置创建特定 UserControl 的新实例。

private void menuParts_Click(object sender, RoutedEventArgs e)
    {
        dgRoot.Children.Clear();
        UserControl control = new ucParts();
        this.dgRoot.Children.Add(control);
        this.Title = "Inventory Manager - Parts";
    }

private void menuSG1_Click(object sender, RoutedEventArgs e)
    {
        dgRoot.Children.Clear();
        UserControl control = new ucSG1();
        this.dgRoot.Children.Add(control);
        this.Title = "Inventory Manager - SG1";
    }

我现在的问题是,我能否创建一个可重复使用的 UserControl 模板,Click 处理程序可以将位置名称提供给该模板?数据以相同的方式显示、格式化、使用等,最终只是底层数据源查询不同。

你似乎可以做到这一点。在我的例子中,只需创建通用用户控件 Grid

MainWindow.xaml

<DockPanel>
    <Menu DockPanel.Dock="Top" Name="menuMain" Height="27" HorizontalAlignment="Stretch" VerticalAlignment="Top" ScrollViewer.VerticalScrollBarVisibility="Disabled" >
        <MenuItem Header="Parts">
            <MenuItem Name="menuParts" Header="Parts" Click="menuParts_Click"/>
            <Separator />
            <MenuItem Name="addPart" Header="Add Part" Click="addPart_Click" />
        </MenuItem>
        <MenuItem Header="Inventory">
            <MenuItem Name="menuBrady" Header="Brady" Click="menuBrady_Click"/>
            <MenuItem Name="menuCO" Header="Community" Click="menuCO_Click"/>
            <MenuItem Name="menuPoly" Header="Poly" Click="menuPoly_Click"/>
            <MenuItem Name="menuSG1" Header="SG1" Click="menuSG1_Click"/>
            <MenuItem Name="menuWS" Header="West Shore" Click="menuWS_Click"/>
        </MenuItem>
    </Menu>
    <Grid Name="dgRoot" />
</DockPanel>

然后如我上面的 Click 处理程序所示,使用它们!