【问题标题】:Windows Phone - how display two items on ListBoxWindows Phone - 如何在 ListBox 上显示两个项目
【发布时间】:2014-08-14 11:18:34
【问题描述】:

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

以下示例:

我的屏幕怎么样:


(来源:infassteste.url.ph

应该是这样的:


(来源:infassteste.url.ph

我的代码:

    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>

【问题讨论】:

    标签: c# windows-phone-8 listbox


    【解决方案1】:

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

    <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的点击事件中,添加如下..

    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

    【讨论】:

    • 非常好!感谢您的支持!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多