Можете ли вы помочь мне с этим. У меня есть этот код, который будет отображать вывод, что каждый раз, когда пользователь вводит код, он перечисляет детали. Я хочу сделать это добавить новую строку в сетку данных из кода (это требование). но, очевидно, когда я добавляю новые данные, он также добавляет новый столбец с теми же данными снова (да, очевидно, из-за моего кода), но я не знал, как это сделать, не добавив тот же столбец.
это код
var col = new DataGridTextColumn();
col.Width = 200;
col.Header = "Barcode";
col.IsReadOnly = true;
col.Binding = new Binding("ItemCode");
dgItemDisplay.Columns.Add(col);
var col2 = new DataGridTextColumn();
col2.Width = 400;
col2.IsReadOnly = true;
col2.Header = "Item Name";
col2.Binding = new Binding("ItemName");
dgItemDisplay.Columns.Add(col2);
var col3 = new DataGridTextColumn();
col3.Width = 200;
col3.IsReadOnly = true;
col3.Header = "Item Price";
col3.Binding = new Binding("ItemPrice");
dgItemDisplay.Columns.Add(col3);
если я не поместил этот код (dgItemDisplay.Columns.Add (col3);), данные не отобразились в сетке данных.
это моя сетка данных в .xaml
<DataGrid MouseLeftButtonUp="DgItemDisplay_MouseLeftButtonUp" HorizontalAlignment="Center" Width="1096" Name="dgItemDisplay" AutoGenerateColumns="False" Height="auto" SelectionMode="Single" CanUserAddRows="false" SelectionUnit="FullRow" />
Извините, если объяснение довольно грязное. Я не знаю, как это объяснить: (
мой код для вставки кода пользователя.
private void txtItemCode_KeyDown(object sender, KeyEventArgs e)
{
try
{
string itemCode = txtItemCode.Text;
if (e.Key == Key.Return)
{
SimpleItem item = cashierViewModel.validateItemOnHandCode(txtItemCode.Text, 1);
if (item != null)
{
cashierViewModel.AddItemToList(item, PosWindows2.cashier.ShopId);
LoadData();
dgItemDisplay.ItemsSource = null;
dgItemDisplay.ItemsSource = CashierViewModel.itemDisplayList;
DataGridTextColumn col = new DataGridTextColumn();
col.Width = 200;
col.Header = "Barcode";
col.IsReadOnly = true;
col.Binding = new Binding("ItemCode");
dgItemDisplay.Columns.Add(col);
DataGridTextColumn col2 = new DataGridTextColumn();
col2.Width = 400;
col2.IsReadOnly = true;
col2.Header = "Item Name";
col2.Binding = new Binding("ItemName");
dgItemDisplay.Columns.Add(col2);
DataGridTextColumn col3 = new DataGridTextColumn();
col3.Width = 200;
col3.IsReadOnly = true;
col3.Header = "Item Price";
col3.Binding = new Binding("ItemPrice");
dgItemDisplay.Columns.Add(col3);
spItemDisplay.Children.Add(dgItemDisplay);
}
else
{
MessageBox.Show("Item Not Available.", "Alert", MessageBoxButton.OK, MessageBoxImage.Information);
}
txtItemCode.Text = null;
}
}
catch (Exception ex)
{
CustomExceptionHandling customExceptionHandling = new CustomExceptionHandling();
customExceptionHandling.CustomExHandling(ex.ToString());
}
}
когда пользователь вставит код элемента в текстовое поле и нажмет клавишу, он отправит информацию о коде элемента в панели стека.