一个根据菜单选择显示不同 DataGrid 的 WPF Window?
One WPF Window that displays different DataGrid's based on Menu selection?
我想根据 Menu
个选择在一个 'DataGrid' 中显示不同的 DataSource
(SQL)个查询。我是不是看错了 UserControl
树?这将如何实施?
编辑:
我终于找到了 ,它似乎很好地回答了我的问题,或者至少稍微修改了我的问题。所以一个 Menu
是列出所有可用的 "Parts"。另一个 Menu
有 MenuItems
对应于位置,并最终对应于每个位置的所述零件的库存。目前,我正在为每个 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
处理程序所示,使用它们!
我想根据 Menu
个选择在一个 'DataGrid' 中显示不同的 DataSource
(SQL)个查询。我是不是看错了 UserControl
树?这将如何实施?
编辑:
我终于找到了 Menu
是列出所有可用的 "Parts"。另一个 Menu
有 MenuItems
对应于位置,并最终对应于每个位置的所述零件的库存。目前,我正在为每个 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
处理程序所示,使用它们!