【发布时间】:2018-08-14 13:38:22
【问题描述】:
流程:
第 1 步:在食物菜单中,您可以选择要订购的食物,如果您点击它会显示数量弹出窗口
OrdernowMenu.xaml 的图像
链接:https://i.stack.imgur.com/qqPUD.jpg
OrdernowMenu.xaml
<ContentPage.ToolbarItems>
<ToolbarItem Icon="cartimage.png" Clicked="ToolbarItem_Clicked"></ToolbarItem>
</ContentPage.ToolbarItems>
<ListView x:Name="MyOrder" ItemSelected="MyOrder_ItemSelected" RowHeight="100">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid ColumnSpacing="0" RowSpacing="0">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackLayout Grid.Row="0" Grid.Column="0" >
<Image Source="{Binding menu_image ,StringFormat='https://i.imgur.com/{0:F0}.png'}" Aspect="AspectFill"/>
</StackLayout>
<StackLayout Grid.Row="0" Grid.Column="1" VerticalOptions="Center">
<Label Text="{Binding menu_name}" Font="30"/>
<Label Text="{Binding menu_price,StringFormat='₱ {0:F0}'}" Font="20"/>
<Label Text="{Binding menu_availability} " Font="10" />
</StackLayout>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
OrdernowMenu.xaml.cs
public partial class OrdernowMenu : ContentPage
{
public float totalprice { get; set; }
public string json_response { get; set; }
public string seletedMenu { get; set; }
public string menuPrice { get; set; }
public string quantity { get; set; }
public string menucode { get; set; }
public OrdernowMenu(PostSender posts1)
{
InitializeComponent();
json_response = posts1.response;
tester = posts1.teststring;
GetUserAsync();
}
private async Task GetUserAsync()
{
var user = JsonConvert.DeserializeObject<List<Menus>>(json_response);
MyOrder.ItemsSource = user;
}
public async Task MyOrder_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
var selectedOrder = e.SelectedItem as Menus;
if (selectedOrder != null)
seletedMenu = selectedOrder.menu_name;
menuPrice = selectedOrder.menu_price;
menucode = selectedOrder.menu_code;
CartSender _sender = new CartSender()
{
nameofmenu = seletedMenu,
priceofmenu = menuPrice,
codeofmenu = menucode
};
var popup = new QuantityPopUp(_sender);
await Navigation.PushAsync(popup);
}
public void ToolbarItem_Clicked(object sender, EventArgs e)
{
Navigation.PushAsync(new OrderCart(null));
}
}
第 2 步:在此处输入订单数量,然后点击确定,它将被添加到订单列表/购物车中
我的问题:它只显示我在 OrderCart.xaml 中的最新订单,如果您有多个订单,它不会堆叠。
QuantityPopUp.xaml 的图像
链接:https://i.stack.imgur.com/cvlB4.jpg
QuantityPopUp.xaml
<ContentPage.ToolbarItems>
<ToolbarItem Name="Cancel" Clicked="Cancel_Clicked" ></ToolbarItem>
</ContentPage.ToolbarItems>
<StackLayout Orientation="Vertical" VerticalOptions="Center">
<StackLayout Orientation="Vertical" HorizontalOptions="Center">
<Label Text="Input Quantity" FontAttributes="Bold" Font="30"/>
<Entry x:Name="entQuantity" Placeholder="How many do you want?" Keyboard="Numeric" HorizontalTextAlignment="Center"/>
</StackLayout>
<StackLayout Orientation="Horizontal" VerticalOptions="Center" HorizontalOptions="Center">
<Button x:Name="btnOK" Text="OK" Clicked="btnOK_Clicked" />
</StackLayout>
</StackLayout>
QuantityPopUp.xaml.cs
public partial class QuantityPopUp : ContentPage
{
public string tempnameofmenu { get; set; }
public string temppriceofmenu { get; set; }
public string tempcodeofmenu { get; set; }
public string tempquantityofmenu { get; set; }
ObservableCollection<CartOrderAdd> test = new ObservableCollection<CartOrderAdd>();
public QuantityPopUp (Data.CartSender _sender)
{
InitializeComponent();
tempnameofmenu = _sender.nameofmenu;
temppriceofmenu = _sender.priceofmenu;
tempcodeofmenu = _sender.codeofmenu;
}
private void btnOK_Clicked(object sender, EventArgs e)
{
test.Add(new CartOrderAdd
{
nameofmenuCOA = tempnameofmenu,
codeofmenuCOA = tempcodeofmenu,
priceofmenuCOA = temppriceofmenu,
quantityofmenuCOA = entQuantity.Text
});
var viewcart = new OrderCart(test);
Navigation.PushAsync(viewcart);
}
private void Cancel_Clicked(object sender, EventArgs e)
{
Navigation.PushAsync(new OrdernowCategory());
}
}
第 3 步:如果您转到 OrderCart.xaml,它必须显示您的所有订单。
我的问题:我不知道出了什么问题,因为即使我有多个订单,它也只显示一个订单。
OrderCart.xaml 的图像
链接:https://i.stack.imgur.com/qiiPP.jpg
OrderCart.xaml
<ContentPage.ToolbarItems>
<ToolbarItem Name="Back" Clicked="Back_Clicked" ></ToolbarItem>
</ContentPage.ToolbarItems>
<ListView x:Name="MyCart" ItemSelected="MyCart_ItemSelected" RowHeight="50">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell >
<Grid>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding nameofmenuCOA}" Font="30" TextColor="Black" FontAttributes="Bold"/>
<Label Text="{Binding priceofmenuCOA}" Font="30" TextColor="Black" FontAttributes="Bold"/>
<Label Text="{Binding codeofmenuCOA}" Font="30" TextColor="Black" FontAttributes="Bold"/>
<Label Text="{Binding quantityofmenuCOA}" Font="30" TextColor="Black" FontAttributes="Bold"/>
</StackLayout>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
OrderCart.xaml.cs
public partial class OrderCart : ContentPage
{
List<CartOrderAdd> _data;
public OrderCart (System.Collections.ObjectModel.ObservableCollection<CartOrderAdd> test)
{
InitializeComponent ();
MyCart.ItemsSource = test;
}
private void MyCart_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
}
private void Back_Clicked(object sender, EventArgs e)
{
Navigation.PushAsync(new OrdernowCategory());
}
}
【问题讨论】:
标签: c# android xaml xamarin xamarin.forms