Windows Phone - 如何在ListBox上显示两个项目

时间:2014-08-14 11:18:35

标签: c# windows-phone-8 listbox

在我的项目中,我有两个ListBox。第一个是从JSON文件填充的。因此,用户选择一个项目并单击“添加”按钮,该项目将添加到ListBox 2中。 但是,我有一个“数量”TextBox,我希望它的内容也出现在ListBox 2上。

以下示例:

我的屏幕怎么样:

before http://infassteste.url.ph/ant.png

应该是:

after http://infassteste.url.ph/dps.jpg

我的代码:

    private void AddProd(object sender, RoutedEventArgs e)
    {

        if (ListBoxx.SelectedItem != null)
        {
            Fields fi = (Fields)this.ListBoxx.SelectedItem;

            ListBoxx2.Items.Add(fi);

        }
        else
        {
            MessageBox.Show("Selecione um item para adicionar!");
        }
    }

我的XAML:

<ListBox Name="ListBoxx"
         FontSize="30"
         HorizontalContentAlignment="Stretch"
         ItemsSource="{Binding Items}" Margin="10,10,10,411" BorderBrush="Red">
                    <ListBox.Background>
                        <SolidColorBrush Color="#FFC3C3C3" Opacity="0.51"/>
                    </ListBox.Background>

                    <!-- Template to display each item -->
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="200" />
                                    <ColumnDefinition Width="Auto" />
                                </Grid.ColumnDefinitions>

                                <TextBlock Grid.Column="0" Text="{Binding FNome}"/>
                                <TextBlock Grid.Column="1" Text="{Binding FEstado}"/>
                            </Grid>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

<ListBox x:Name="ListBoxx2"
                    FontSize="30"
                    HorizontalContentAlignment="Stretch"
                     Margin="10,311,10,10" BorderBrush="Red">
                    <ListBox.Background>
                        <SolidColorBrush Color="#FFC3C3C3" Opacity="0.51"/>
                    </ListBox.Background>

                    <!-- Template to display each item -->
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="200" />
                                    <ColumnDefinition Width="Auto" />
                                </Grid.ColumnDefinitions>

                                <TextBlock Grid.Column="0" Text="{Binding FNome}"/>
                                <TextBlock Grid.Column="1" Text="{Binding FEstado}"/>
                            </Grid>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

2 个答案:

答案 0 :(得分:1)

为ListBox中显示的类定义新属性并绑定并将其绑定到第三个TextBlock。 (FNome,FEstado)。

在AddProd方法中,您可以从ListBoxx.SelectedItem获取自定义类的实例并更改新属性。

答案 1 :(得分:1)

将属性添加到Fields类以保存数量。让我们称之为数量。像这样修改ListBoxx2 ItemTemplate

<ListBox.ItemTemplate>
    <DataTemplate>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="200" />
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="Auto" />
             </Grid.ColumnDefinitions>
             <TextBlock Grid.Column="0" Text="{Binding FNome}"/>
             <TextBlock Grid.Column="1" Text="{Binding FEstado}"/>
             <TextBlock Grid.Column="2" Text="{Binding Quantity}"/>
         </Grid>
     </DataTemplate>
 </ListBox.ItemTemplate>

然后在Button的click事件中,添加以下内容..

private void AddProd(object sender, RoutedEventArgs e)
{
    if (ListBoxx.SelectedItem != null)
    {
        Fields fi = (Fields)this.ListBoxx.SelectedItem;
        fi.Quantity = txtQuantity.Text; // SET THE Quantity..
        ListBoxx2.Items.Add(fi);
    }
    else
    {
        MessageBox.Show("Selecione um item para adicionar!");
    }
}

然后将文本框中的值添加到对象中,并将其绑定到ListBox ItemTemplate