首页 文章

将列表框选定项目发送到另一个uwp页面上的另一个列表框

提问于
浏览
0

我在第一页上有一个带有汽车对象的清单 . 我想从列表中点击一辆汽车,然后单击一个按钮,将所选汽车发送到另一个uwp页面上的列表 .
我试图将 listCar.selecteditems 放在我创建的名为 purchase 的空列表中,并在第2页显示 purchase . 使用我目前的代码,它只在第2页的列表中显示 ProjectName_Car .
任何正确显示这一点的帮助表示赞赏 .

Page1.xaml.cs

private void Add_Click(object sender, RoutedEventArgs e)
    {
        var query = listCars.SelectedItems.ToList().Cast<Car>();

        foreach (var item in query)
        {
            purchase.Add(item);
        }

        liistCar.ItemsSource = purchase;
        Frame.Navigate(typeof(Page2), listCar.Items);
    }

Page2.xaml.cs

protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);

        lstCars.ItemsSource =  e.Parameter as List<Car> ;

    }

编辑:Page1.xaml

<ListBox Name="listCars" ItemsSource="{x:Bind cars}" >
            <ListBox.ItemTemplate>
                <DataTemplate x:DataType="Car">
                    <StackPanel Padding="20">
                        <Image Width="200" Height="150" HorizontalAlignment="Left" Source="{x:Bind imgCar}" />
                        <TextBlock FontSize="22" HorizontalAlignment="Left" Text="{x:Bind Name}" Style="{StaticResource HeaderTextBlockStyle}"/>
                        <TextBlock FontSize="16" HorizontalAlignment="Left"> € <Run Text="{Binding Price}" /></TextBlock>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

1 回答

  • 1

    这个将您选择的汽车列表对象作为参数传递给下一页及其所有属性 .

    MainPage.xaml中

    <Page
        x:Class="App1.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:App1"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        x:Name="YourPage"
    
        Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <StackPanel  x:Name="Stacky" HorizontalAlignment="Stretch" Background="Aqua" VerticalAlignment="Stretch">
            <ListBox Name="listCars" ItemsSource="{x:Bind cars}" SelectionMode="Multiple"  Grid.Column="0"  Grid.Row="1" Background="#FFF1EFEF" Opacity="0.7" Foreground="Black" Margin="10,10,94,10" Grid.RowSpan="2">
                <ListBox.ItemTemplate>
                    <DataTemplate x:DataType="local:Car">
                        <StackPanel Padding="20" BorderThickness="2" BorderBrush="Black">
                            <Image Width="200" Height="150" HorizontalAlignment="Left" Source="{x:Bind imgCar}" />
                            <TextBlock FontSize="22" HorizontalAlignment="Left" Text="{x:Bind name}" Style="{StaticResource HeaderTextBlockStyle}"/>
                            <TextBlock FontSize="16" HorizontalAlignment="Left"> € <Run Text="{x:Bind price}" /></TextBlock>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
            <Button Content="Done Selecting" Click="Add_Click"></Button>
        </StackPanel>
    </Page>
    

    MainPage.xaml.cs中

    public sealed partial class MainPage : Page
        {
    
            List<Car> cars = new List<Car>();
            public MainPage()
            {
                cars.Add(new Car() { imgCar = "ms-appx:///Assets/1.jpg", name = "Car1", price = "10000" });
                cars.Add(new Car() { imgCar = "ms-appx:///Assets/2.jpg", name = "Car2", price = "10001" });
                cars.Add(new Car() { imgCar = "ms-appx:///Assets/3.jpg", name = "Car3", price = "10002" });
                this.InitializeComponent();    
    
            }
            private void Add_Click(object sender, RoutedEventArgs e)
            {
                List<Car> mySelectedItems = new List<Car>();
                foreach (Car item in listCars.SelectedItems)
                {
                    mySelectedItems.Add(item);
                }
                Frame.Navigate(typeof(Page2), mySelectedItems);
            }
        }
        public class Car
        {
            public string imgCar { get; set; }
            public string name { get; set; }
            public string price { get; set; }
        }
    

    Page2.xaml

    <Page
        x:Class="App1.Page2"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:App1"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    
        <Grid>
            <ListBox Name="listCars"  SelectionMode="Multiple"  Grid.Column="0"  Grid.Row="1" Background="#FFF1EFEF" Opacity="0.7" Foreground="Black" Margin="10,10,94,10" Grid.RowSpan="2">
                <ListBox.ItemTemplate>
                    <DataTemplate x:DataType="local:Car">
                        <StackPanel Padding="20" BorderThickness="2" BorderBrush="Black">
                            <Image Width="200" Height="150" HorizontalAlignment="Left" Source="{x:Bind imgCar}" />
                            <TextBlock FontSize="22" HorizontalAlignment="Left" Text="{x:Bind name}" Style="{StaticResource HeaderTextBlockStyle}"/>
                            <TextBlock FontSize="16" HorizontalAlignment="Left"> € <Run Text="{x:Bind price}" /></TextBlock>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </Grid>
    </Page>
    

    Page2.xaml.cs

    public sealed partial class Page2 : Page
        {
            public Page2()
            {
                this.InitializeComponent();
            }
            protected override void OnNavigatedTo(NavigationEventArgs e)
            {
                var items  =   e.Parameter as List<Car>;
                listCars.ItemsSource = items;
                base.OnNavigatedTo(e);
            }
        }
    

相关问题