Masalah yang saya hadapi adalah saya ingin setiap kali pengguna memasukkan kode item, semua detail terkait dimasukkan ke dalam stackpanel baru. itu berarti setiap item yang ditambahkan akan menambahkan stackpanel baru. 1 stackpanel akan memiliki 1 item. tapi aku tidak bisa bagaimana melakukannya dengan cara itu.

Ini adalah kode di belakang ketika pengguna memasukkan kode batang dan tekan 'Enter'

private void txtItemCode_KeyDown(object sender, KeyEventArgs e)
        {
            try
            {

            string itemCode = txtItemCode.Text;
            StackPanel spItemDisplay = new StackPanel();
            spItemDisplay.Orientation = Orientation.Horizontal;

            if (e.Key == Key.Return)
            {
              spItemDisplay.Children.Add(spItemDisplay);
                SimpleItem item = cashierViewModel.validateItemOnHandCode(txtItemCode.Text, 1);

                if (item != null)
                {
                        cashierViewModel.AddItemToList(item, PosWindows2.cashier.ShopId);
                        LoadData();
                        dgItemDisplay.ItemsSource = null;
                        dgItemDisplay.ItemsSource = CashierViewModel.itemDisplayList;
                }
                else
                {
                    MessageBox.Show("Item Not Available.", "Alert", MessageBoxButton.OK, MessageBoxImage.Information);
                }

                txtItemCode.Text = null;
            }
        }

Ini di .xaml

 <StackPanel x:Name="spItemDisplay" >
                     <ScrollViewer HorizontalAlignment="Right" >
                        <DataGrid CellEditEnding="DgItemDisplay_CellEditEnding" HorizontalAlignment="Center"  Width="1036" Name="dgItemDisplay" AutoGenerateColumns="False" Height="auto" >
                            <DataGrid.Columns>
                                <DataGridTextColumn IsReadOnly="True" x:Name="dgItemCode" Width="200" Header="Barcode" Binding="{Binding ItemCode}" />
                                <DataGridTextColumn IsReadOnly="True" x:Name="dgItemName" Width="350" Header="Item Name" Binding="{Binding ItemName}" />
                                <DataGridTextColumn IsReadOnly="True" x:Name="dgItemPrice" Width="150" Header="Item Price" Binding="{Binding ItemPrice}" />
                                <DataGridTextColumn x:Name="dgQuantity" Width="150" Header="Quantity" Binding="{Binding Quantity, UpdateSourceTrigger=PropertyChanged}" />
                                <DataGridTextColumn x:Name="dgDiscount" Width="150" Header="Discount" Binding="{Binding Discount, UpdateSourceTrigger=PropertyChanged}" />
                            </DataGrid.Columns>
                            <DataGrid.RowDetailsTemplate>
                                <DataTemplate  >
                                    <StackPanel Name="spItem" HorizontalAlignment="Center" >
                                        <Grid Margin="0,10"  >
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="300" />
                                                <ColumnDefinition Width="300" />
                                                <ColumnDefinition Width="100" />
                                                <ColumnDefinition Width="100" />
                                                <ColumnDefinition Width="*" />
                                            </Grid.ColumnDefinitions>
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="Auto" />
                                                <RowDefinition Height="Auto" />
                                            </Grid.RowDefinitions>
                                            <TextBlock Text="Quantity: " FontWeight="Bold" Grid.Column="2" Grid.Row="0"/>
                                            <TextBox x:Name="txtQty" Text="{Binding Quantity, UpdateSourceTrigger=PropertyChanged}" Grid.Column="3" Grid.Row="0"/>
                                            <TextBlock Text="Discount: " FontWeight="Bold" Grid.Column="2" Grid.Row="1"/>
                                            <TextBox x:Name="txtDisc" Text="{Binding Discount, UpdateSourceTrigger=PropertyChanged}" Grid.Column="3" Grid.Row="1"/>
                                        </Grid>
                                    </StackPanel>
                                </DataTemplate>
                            </DataGrid.RowDetailsTemplate>
                        </DataGrid>
                    </ScrollViewer>
                </StackPanel>

Ada yang bisa bantu? Saya sangat membutuhkan bantuan Anda. Terima kasih :)

1
rayna qarla 5 Maret 2019, 10:23

1 menjawab

Jawaban Terbaik

Tidak bisakah Anda menggunakan ItemsControl/ListView, yang memiliki StackPanel (untuk spItemDisplay) sebagai ItemsPanelTemplate dan menentukan DataTemplate sebagai StackPanel (spItem) Anda?

Sesuatu di sepanjang baris ini:

    <ItemsControl ItemsSource="{Binding DisplayItems}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Vertical"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <StackPanel x:Name="spItem">
                    <Grid Margin="0,10">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition/>
                            <RowDefinition/>
                        </Grid.RowDefinitions>

                        <TextBlock Text="Quantity: "/>
                        <TextBlock Text="{Binding Quantity}"/>
                        <TextBlock/>
                    </Grid>
                </StackPanel>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

MEMPERBARUI:

Jika Anda tidak terbiasa dengan DataTemplates, silakan lihat tautan Andy di komentar atau lihat contoh berikut.

Kontrol Item + DataTemplate dijelaskan

0
Evaniar 5 Maret 2019, 09:30