如何在XamGrid中显示多行
本文关键字:显示 XamGrid | 更新日期: 2023-09-27 18:23:39
我正在使用ListBox控件来显示项目,当我加倍Cilck时,项目意味着特定的项目字段将显示在xamgrid中,问题是当我选择的项目意味着它的显示,但我需要在网格中为一个或多个项目显示多个内容
我的密码是,
private void LsImageGallery_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
RTBSPROJECT.DB.RTBSInventoryMgmtEntities2 MyRTBSinventoryDB = new DB.RTBSInventoryMgmtEntities2();
RTBSPROJECT.DB.RTBSInventoryMgmtEntities2 DB_Linq = new DB.RTBSInventoryMgmtEntities2();
try
{
string curItem = LsImageGallery.SelectedItem.ToString();
#region
if (cmbItemCombo.SelectedItem == null)
{
var SelectedImage = (ImageEntity)this.LsImageGallery.SelectedItem;
string ItemName = SelectedImage.ItemName_EN;
var query = (from MyItems in MyRTBSinventoryDB.tbl_ItemMaster
where MyItems.ActiveFlag == true &&
MyItems.ItemName_EN == ItemName
select MyItems).ToList();
xamGrid1.ItemsSource = query;
}
每次显示一条记录,如果我选择了第二条,意味着之前选择的不应该清除这两条记录。请帮助我。
我不能100%确定你在这里问什么,但我还是要试一试。在我看来,您试图向DataGrid添加更多的行,但只显示新的项。
这是因为您正在更改DataGrid的ItemsSource属性,如果您希望将新项添加到底部,则ItemsSource需要保持不变,然后添加新行。
这可以通过DataGrid上的Items.Add()方法来完成,在数据行上循环并为每一行调用Add,也可以创建一个只需双击即可添加到的Items集合,我在这里提供了第二个例子。
就像您的应用程序一样,它显示了一个ListBox和一个DataGrid,每次双击ListBox中的一个项时,就会向DataGrid中添加更多的行。
XAML
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ListBox Grid.Column="0" ItemsSource="{Binding Items}" MouseDoubleClick="ListBox_MouseDoubleClick"/>
<DataGrid Grid.Column="1" ItemsSource="{Binding GridItems}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
背后的代码
using System;
using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Input;
namespace WpfApplication1
{
public partial class MainWindow : Window
{
// This collection is bound to the ListBox so there are items to select from.
public ObservableCollection<object> Items
{
get { return (ObservableCollection<object>)GetValue(ItemsProperty); }
set { SetValue(ItemsProperty, value); }
}
public static readonly DependencyProperty ItemsProperty =
DependencyProperty.Register("Items", typeof(ObservableCollection<object>), typeof(MainWindow), new PropertyMetadata(null));
// On double click of each item in the ListBox more items will be added to this collection.
public ObservableCollection<object> GridItems
{
get { return (ObservableCollection<object>)GetValue(GridItemsProperty); }
set { SetValue(GridItemsProperty, value); }
}
public static readonly DependencyProperty GridItemsProperty =
DependencyProperty.Register("GridItems", typeof(ObservableCollection<object>), typeof(MainWindow), new PropertyMetadata(null));
public MainWindow()
{
InitializeComponent();
// Some demo items so we can double click.
Items = new ObservableCollection<object>();
Items.Add("test item 1");
Items.Add("test item 2");
Items.Add("test item 3");
Items.Add("test item 4");
Items.Add("test item 5");
Items.Add("test item 6");
Items.Add("test item 7");
GridItems = new ObservableCollection<object>();
}
private void ListBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
// These would be the entries from your database, I'm going to add random numbers.
Random rnd = new Random();
for (int i = 0; i < rnd.Next(5); i++)
GridItems.Add(rnd.Next(100));
}
}
}