Witam serdecznie. Piszę aplikację sklepu windows na Windows 8.1 Phone. Natknąłem się na problem:
<Page.BottomAppBar>
<CommandBar>
<AppBarButton x:Name="ButtonPanel_Add" Icon="Add" Label="Dodaj" Click="ButtonPanel_Add_Click"/>
</CommandBar>
</Page.BottomAppBar>
<Grid>
<ListView x:Name="listView" HorizontalAlignment="Center" Height="384" VerticalAlignment="Top" Width="504" Margin="10,0">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Name="PanelUI" Height="80" Orientation="Horizontal" HorizontalAlignment="Center" UseLayoutRounding="True" Tapped="SeriesPanelUI_Tapped" Holding="PanelUI_Holding">
<Border Height="40" Width="40" Margin="0,0,0,0">
<Image Name="Image_Exercise" Height="40" Width="40"/>
</Border>
<StackPanel Orientation="Vertical" VerticalAlignment="Center" Margin="0,0,0,0" HorizontalAlignment="Center">
<Button Content="Wybierz" x:Name="Button_Exercise" Margin="10,0,0,0" Width="180" FontSize="18" HorizontalAlignment="Center" VerticalAlignment="Center" Loaded="Button_Exercise_Loaded">
<Button.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
<Button.Flyout>
<MenuFlyout>
</MenuFlyout>
</Button.Flyout>
</Button>
</StackPanel>
<StackPanel Orientation="Vertical" VerticalAlignment="Top" Margin="0,0,0,0" HorizontalAlignment="Center">
<AppBarButton Icon="Add" Name="Button_Plus" Height="60" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0,10,0,0" Click="Button_Plus_Click"/>
</StackPanel>
<StackPanel Orientation="Vertical" VerticalAlignment="Top" Margin="0,0,0,0" HorizontalAlignment="Center">
<AppBarButton Icon="Remove" Name="Button_Minus" Height="60" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0,10,0,0" Click="Button_Minus_Click"/>
</StackPanel>
<StackPanel Orientation="Vertical" VerticalAlignment="Top" Margin="0,0,0,0" HorizontalAlignment="Center">
<TextBlock Name="textBlock_Count" Text="0" TextWrapping="Wrap" Width="100" FontSize="40" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,10,0,0"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Page>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
DisplayInformation.AutoRotationPreferences = DisplayOrientations.Landscape;
}
public T FindElementByName<T>(DependencyObject element, string sChildName) where T : FrameworkElement
{
T childElement = null;
var nChildCount = VisualTreeHelper.GetChildrenCount(element);
for (int i = 0; i < nChildCount; i++)
{
FrameworkElement child = VisualTreeHelper.GetChild(element, i) as FrameworkElement;
if (child == null)
continue;
if (child is T && child.Name.Equals(sChildName))
{
childElement = (T)child;
break;
}
childElement = FindElementByName<T>(child, sChildName);
if (childElement != null)
break;
}
return childElement;
}
private async void Button_Exercise_Loaded(object sender, RoutedEventArgs e)
{
Button Button_Exercise = FindElementByName<Button>(listView, "Button_Exercise");
MenuFlyout mn = new MenuFlyout();
Button_Exercise.Flyout = mn;
var Loading = new File();
var Content = await Loading.LoadLocal("ExercisesList.Se");
if (Content == "0") { Content = "[]"; }
if (Content == string.Empty) { Content = "[]"; }
if (Content == null) { Content = "[]"; }
var loaded = JsonConvert.DeserializeObject<IEnumerable<DataSource>>(Content);
foreach (var item in loaded)
{
var flyoutItem = new MenuFlyoutItem();
flyoutItem.Text = item._Nazwa;
flyoutItem.Name = item._Image;
mn.Items.Add(flyoutItem);
flyoutItem.Click += new RoutedEventHandler(FlyoutItem_Click);
}
}
private void FlyoutItem_Click(object sender, RoutedEventArgs e)
{
Button Button_Exercise = FindElementByName<Button>(listView, "Button_Exercise");
Image Image_Exercise = FindElementByName<Image>(listView, "Image_Exercise");
MenuFlyoutItem flyoutItem = sender as MenuFlyoutItem;
if (flyoutItem != null)
{
var Clicked = flyoutItem.Text;
Button_Exercise.Content = Clicked;
}
var Img = flyoutItem.Name;
var Path = string.Empty;
switch(Img)
{
case "1":
Path = "ms-appx:///Assets/1.png";
break;
case "2":
Path = "ms-appx:///Assets/2.png";
break;
case "3":
Path = "ms-appx:///Assets/3.png";
break;
case "4":
Path = "ms-appx:///Assets/4.png";
break;
case "5":
Path = "ms-appx:///Assets/5.png";
break;
case "6":
Path = "ms-appx:///Assets/6.png";
break;
default:
Path = "ms-appx:///Assets/1.png";
break;
}
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.UriSource = new Uri(Path);
Image_Exercise.Source = bitmapImage;
}
private void Button_Plus_Click(object sender, RoutedEventArgs e)
{
TextBlock textBlock_Count = FindElementByName<TextBlock>(listView, "textBlock_Count");
var CounterText = textBlock_Count.Text;
var ParsingText = float.Parse(CounterText);
var Counter = ParsingText;
Counter = Counter + 1;
if (Counter < 0) { Counter = 0; }
textBlock_Count.Text = Counter.ToString();
}
private void Button_Minus_Click(object sender, RoutedEventArgs e)
{
TextBlock textBlock_Count = FindElementByName<TextBlock>(listView, "textBlock_Count");
var CounterText = textBlock_Count.Text;
var ParsingText = float.Parse(CounterText);
var Counter = ParsingText;
Counter = Counter - 1;
if (Counter < 0) { Counter = 0; }
textBlock_Count.Text = Counter.ToString();
}
private void ButtonPanel_Add_Click(object sender, RoutedEventArgs e)
{
object EX = string.Empty;
listView.Items.Add(EX);
}
A więc sprawa wygląda tak. Ma to być aplikacja licząca powtórzenia na siłowni.
Aplikacja działa tak że po kliknięciu na przycisk ButtonPanel_Add dodaje się pozycja w listView określona w ListView DataTemplate. Ma to być dana seria ćwiczenia.
Zrobiłem prowizoryczny licznik powtórzeń który dodaje i odejmuje po wciśnięciu + i -. Po wciśnięcu buttona Button_Exercise "Wybierz" wyświetla się lista ćwiczeń w MenuFlyout przygotowana już wcześniej . Wszystko działa w przypadku jednej pozycji (zdjęcie powyżej). Ale gdy dodaje kilka serii (Zdjęcie poniżej) działa to tylko dla pierwszej utworzonej serii. Po wciśnięciu przycisku + w czwartej serii dodaje się na licznik pierwszej serii. Teraz moja prośba do was. Co muszę zrobić aby każda seria była nie zależna od siebie?