Button w ListView

0

Witam,
W aplikacji WCF wyświetlam w listview dane pochodzące z bazy:

 
 private async void FindPromotion()//wyszukiwanie promocji
        {
            MobileServiceCollection<DataModel.promotions, DataModel.promotions> items2;
            IMobileServiceTable<DataModel.promotions> todoTable2 = App.MobileService.GetTable<DataModel.promotions>();
  

                string _place = textInputPlace.Text;  
                string _product = PCombo.SelectedItem.ToString();
                items2 = await todoTable2.Where(ToDoItem => ToDoItem.Place == _place && ToDoItem.Products == _product).ToCollectionAsync();
         
            ListItems.ItemsSource = items2; //zwrócenie listy Category
            

        }

Chciałabym, aby po prawej strony listy, przy każdej wyświetlonej pozycji pojawił się przycisk, po którego kliknięciu nastąpi pobranie wartości int z bazy (wartość przypisaną do zaznaczonej pozycji) i zwiększenie wartości o 1. Czy istnieje taki sposób? Próbowałam kilku, ale mój główny problem na tym, że wyświetla się tylko jeden przycisk, a chciałabym, żeby było ich tyle ile wierszy wyświetlonych w listview.
Kod w xaml:

 <ListView x:Name="ListItems" Foreground="White"  HorizontalAlignment="Left" Height="693" Margin="0,82,0,-7" VerticalAlignment="Top" Width="858">
                    <TextBlock Text="{Binding ''}"  />
                    <Button HorizontalAlignment="Left" Margin="718,10,0,692" x:Name="NotifyButton" Width="80" Content="Nie ma takiej promocji" CommandParameter="{Binding Notification}" Click="NotifyButton_Click"/>
                </ListView>
 
0

Potrzebujesz ItemTemplate, żeby zdefiniować, jak każdy element będzie wyświetlany, np.

<ListView.ItemTemplate>
	<DataTemplate>
		<StackPanel Orientation="Horizontal">
			<TextBlock ... />
			<Button ... />
		</StackPanel>
	</DataTemplate>            
</ListView.ItemTemplate>
0

Dziękuję, dodanie

StackPanel 

rozwiązało problem z wyświetlaniem. Jednak nadal nie wiem jak pobrać wartość int z bazy(nie jest wyświetlana w listview), do której przycisk się odnosi. Znalazłam taki kod, lecz nie działa:

 private void NotifyButton_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            IsEnabled = false;
            Button button = sender as Button;
            DataModel.promotions promo = button.DataContext as DataModel.promotions;
            int not = promo.Notification;
            not++;
            promo.Notification = not;
        }
 
0

Co to znaczy "nie działa"? Co konkretnie dzieje się źle?

0

Nie dodaje wartości 1, jak w tabeli było 0 tak po wykonaniu tej funkcji nadal jest 0.

0

Problem rozwiązany. Funkcja powinna wyglądać następująco:

  private async void NotifyButton_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            Button button = sender as Button;
            button.IsEnabled = false;
            DataModel.promotions promo = button.DataContext as DataModel.promotions;
            int not = promo.Notification;
            not++;
            promo.Notification = not;
            await todoTable2.UpdateAsync(promo);     
        }
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1