public TipView() { var zajednickiElementi = new ZajednickiElementiAplikacije(); BindingContext = new TipViewModel(); Title = "Tip vježbe"; var pitanjaButton = zajednickiElementi.PrimarniNavigacijskiButton("Generator pitanja"); pitanjaButton.SetBinding(Button.CommandProperty, nameof(TipViewModel.PitanjeCommand)); var korakButton = zajednickiElementi.PrimarniNavigacijskiButton("Korak po korak"); korakButton.SetBinding(Button.CommandProperty, nameof(TipViewModel.KorakCommand)); Content = new StackLayout { Children = { pitanjaButton, korakButton } , Margin = new Thickness(0, 10, 0, 0) }; }
public TemeView() { var zajednickiElementi = new ZajednickiElementiAplikacije(); BindingContext = new TemeViewModel(); Title = "Grane fizike"; var temaKinematikaButton = zajednickiElementi.PrimarniNavigacijskiButton(kinematika); temaKinematikaButton.SetBinding(Button.CommandProperty, nameof(TemeViewModel.OdabirGraneFizikeCommand)); var temaDinamikaButton = zajednickiElementi.PrimarniNavigacijskiButton(dinamika); temaDinamikaButton.SetBinding(Button.CommandProperty, nameof(TemeViewModel.OdabirGraneFizikeCommand)); Content = new StackLayout { Children = { temaKinematikaButton, temaDinamikaButton }, Margin = new Thickness(0, 10, 0, 0) }; }
public PrikazRjesenjaView(string param, ArrayList odgovorArray, string imageSource) { BindingContext = new PrikazRjesenjaViewModel(odgovorArray, imageSource); Title = param; var zajednickiElementi = new ZajednickiElementiAplikacije(); var collectionViweFormula = new CollectionView { ItemTemplate = new ImageFromulaTemplate() }; collectionViweFormula.SetBinding(ItemsView.ItemsSourceProperty, nameof(PrikazRjesenjaViewModel.FormulaCollection)); var collectionViewOdgovor = new CollectionView { ItemTemplate = new LableOdgovorTemplate(), VerticalScrollBarVisibility = ScrollBarVisibility.Always }; collectionViewOdgovor.SetBinding(ItemsView.ItemsSourceProperty, nameof(PrikazRjesenjaViewModel.OdgovorCollection)); var backButton = zajednickiElementi.BackNavigationButton("Nazad"); backButton.SetBinding(Button.CommandProperty, nameof(PrikazRjesenjaViewModel.NazadCommand)); var grid = new Grid { ColumnDefinitions = { new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }, }, RowDefinitions = { new RowDefinition { Height = new GridLength(110, GridUnitType.Absolute) }, new RowDefinition { Height = new GridLength(0.5, GridUnitType.Star) }, new RowDefinition { Height = new GridLength(90, GridUnitType.Absolute) } } }; grid.Children.Add(collectionViweFormula, 0, 0); grid.Children.Add(collectionViewOdgovor, 0, 1); grid.Children.Add(backButton, 0, 2); Content = grid; }
public App() { var zajednickiElementi = new ZajednickiElementiAplikacije(); InitializeComponent(); MainPage = new NavigationPage(new TipView()) { BarBackgroundColor = zajednickiElementi.NavigacijaDrugaBoja, BarTextColor = Color.Black, BackgroundColor = zajednickiElementi.GridBackColor, }; }
public KorakFormuleView(string title) { var zajednickiElementi = new ZajednickiElementiAplikacije(); BindingContext = new KorakFormuleViewModel(); Title = title; var mjerneJedinice = new Button { Text = "Odaberi mjerne jedinici" }; mjerneJedinice.Clicked += async(sender, args) => { mjerneJedinice.CommandParameter = await DisplayActionSheet("Odaber mjernu jedinicu", "Cancel", null, "m, s", "km, h"); }; mjerneJedinice.SetBinding(Button.CommandParameterProperty, nameof(KorakFormuleViewModel.MjernaJedinica), BindingMode.OneWayToSource); var brzinaButton = zajednickiElementi.FormulaNavButton("Vst"); brzinaButton.SetBinding(Button.CommandProperty, nameof(KorakFormuleViewModel.KalkulatorButtonCommand)); var vrijemeButton = zajednickiElementi.FormulaNavButton("Tsv"); vrijemeButton.SetBinding(Button.CommandProperty, nameof(KorakFormuleViewModel.KalkulatorButtonCommand)); var putButton = zajednickiElementi.FormulaNavButton("Svt"); putButton.SetBinding(Button.CommandProperty, nameof(KorakFormuleViewModel.KalkulatorButtonCommand)); Content = new StackLayout { Children = { mjerneJedinice, brzinaButton, vrijemeButton, putButton }, Margin = new Thickness(0, 10, 0, 0) }; }
public KorakView() { var zajednickiElementi = new ZajednickiElementiAplikacije(); BindingContext = new KorakViewModel(); Title = "Korak po korak"; var kinematikaButton = zajednickiElementi.PrimarniNavigacijskiButton("Kinematika"); kinematikaButton.SetBinding(Button.CommandProperty, nameof(KorakViewModel.KinematikaCommand)); Content = new StackLayout { Children = { kinematikaButton }, Margin = new Thickness(0, 10, 0, 0) }; }
private static StackLayout LoadTemplate() { var zajednickiElementi = new ZajednickiElementiAplikacije(); var textLable = new Label { FontSize = 18, }; textLable.SetBinding(Label.TextProperty, nameof(PitanjeModel.MJRješenje)); var frame = new Frame { VerticalOptions = LayoutOptions.Center, Content = textLable, BackgroundColor = zajednickiElementi.PrimarnaBoja, }; return(new StackLayout { Children = { frame }, Padding = new Thickness(20, 10) }); }
public PitanjeView(string nazivGraneNavigacija) { // Instanciranje klase zajednicki elementi aplikacije koja sadrži unificirani gumb var zajednickiElementi = new ZajednickiElementiAplikacije(); // Veza sa view modelom koji je potereban jer view model odrađuje poslovnu logiku aplikacije BindingContext = new PitanjeViewModel(nazivGraneNavigacija); // Naziv stranice koji se prikazuje u navigacijskom elenentu stranice. // Naziv dolazi vezan za command property guba sa prijašnjeg view-a u ovom slučaju temaView Title = nazivGraneNavigacija; var item = new ToolbarItem { Text = "Napredak", }; this.ToolbarItems.Add(item); item.SetBinding(ToolbarItem.CommandProperty, nameof(PitanjeViewModel.NapredakCommand)); // Kolekcija koja može biti i samo label jer sadrži vrijednost string pitanja koje se postavlja korsniku // Vezan je za ViewModel vrijednost pitanje kolekcija koji sadrži string i koji se vraća u view za prikaz korisniku var collectionViewPitanje = new CollectionView { ItemTemplate = new LablePitanjeTemplate() }; collectionViewPitanje.SetBinding(ItemsView.ItemsSourceProperty, nameof(PitanjeViewModel.PitanjeCollection)); // Entry polje (bolje poznato kao input korisnik unosi vrijednost riješenja formule koju je napravio na "papiru" // Entry je vezan za property OdgovorKorisnika u ViewModelu koji se ažurira u stvarno vremenu automatski // Entry polje se ne prikazuje priliku instanciranja Pregleda, postaje vidljivo tek kad se generira prvo pitanje var unosOdgovora = new Entry { Placeholder = "Unesi odgovor", BackgroundColor = Color.White, Margin = new Thickness(20, 10), Keyboard = Keyboard.Numeric }; unosOdgovora.SetBinding(Entry.TextProperty, nameof(PitanjeViewModel.OdgovorKorisnika)); unosOdgovora.SetBinding(IsVisibleProperty, nameof(PitanjeViewModel.IsVisible)); var collectionViewMjernaJedinica = new CollectionView { ItemTemplate = new LableMjernaJedinicaTemplate() }; collectionViewMjernaJedinica.SetBinding(ItemsView.ItemsSourceProperty, nameof(PitanjeViewModel.MjernaJedinicaOdgovoraCollection)); var obavjestNakonOdgovora = new CollectionView { ItemTemplate = new LableObavjestOdgvorTemplate() }; obavjestNakonOdgovora.SetBinding(ItemsView.ItemsSourceProperty, nameof(PitanjeViewModel.ObavijestKorisnikuCollection)); var collectionViewOdgovor = new CollectionView { ItemTemplate = new LableOdgovorTemplate() }; collectionViewOdgovor.SetBinding(ItemsView.ItemsSourceProperty, nameof(PitanjeViewModel.OdgovorCollection)); // Button za generiranje novog pitanja // Vezano je na ViewModel na ICommand GenerirajPitanjeCommand // Pošto je to button koji korisiti primarne boje instancira se iz zajedničkih elemenata // Sam gumb je preopterečena metoda za izradu novog gumba jer naziv gumba i commandProperty nisu ista vrijednost var generirajPitanjeButton = zajednickiElementi.OtherButton(novoPitanje, nazivGraneNavigacija); generirajPitanjeButton.SetBinding(Button.CommandProperty, nameof(PitanjeViewModel.GenerirajPitanjeCommand)); // Button koji će prikazati korisniku odogovor nakon što je unešeno riješenje i provjereno // Pošto je to jedini gumb ovih vrijednosti onda ga ne generiramo iz zajedničkih elelemnata // Ali pošto koristi boje aplikacije da bi se održala uniformiranost boju vuče iz zajedničkih elemenata // Gumb nije vidljiv dok se ne unese riješenje var prikaziOdgovorButton = zajednickiElementi.OtherButton(prikaziRiješenjeButton, prikaziRješenjeNaziv); prikaziOdgovorButton.BackgroundColor = zajednickiElementi.NavigacijaDrugaBoja; prikaziOdgovorButton.SetBinding(Button.CommandProperty, nameof(PitanjeViewModel.PrikaziOdgovorCommand)); prikaziOdgovorButton.SetBinding(IsEnabledProperty, nameof(PitanjeViewModel.IsEnabledRiješenje)); // Gumb koji korsnik uspoređuje svoje rješenje jednadžbe s rješenjem aplikacije var provjeriOdgovorButton = zajednickiElementi.OtherButton("Provjeri rješenje"); provjeriOdgovorButton.BackgroundColor = zajednickiElementi.BackColorGreen; provjeriOdgovorButton.SetBinding(Button.CommandProperty, nameof(PitanjeViewModel.ProvjeriOdgovorCommand)); provjeriOdgovorButton.SetBinding(IsEnabledProperty, nameof(PitanjeViewModel.IsEnabledProvjeriOdgovor)); // Generiranje mreže koja će držati elemente aplikacije u pregledu za korisnika // Mreža ima dvije kolone i 4 reda var grid = new Grid { Margin = new Thickness(10, 10), ColumnDefinitions = { new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }, new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) } }, RowDefinitions = { new RowDefinition { Height = new GridLength(0.5, GridUnitType.Star) }, new RowDefinition { Height = new GridLength(0.5, GridUnitType.Auto) }, new RowDefinition { Height = new GridLength(90, GridUnitType.Absolute) }, new RowDefinition { Height = new GridLength(90, GridUnitType.Absolute) }, new RowDefinition { Height = new GridLength(70, GridUnitType.Absolute) }, new RowDefinition { Height = new GridLength(70, GridUnitType.Absolute) } } }; // Dodavanje elementa na sam pregled neki elementi se protežu preko cijelog reda dok drugi zauzimaju jednu od kolona grid.Children.Add(collectionViewPitanje, 0, 0); Grid.SetColumnSpan(collectionViewPitanje, 2); //grid.Children.Add(collectionViewOdgovor, 0, 1); grid.Children.Add(unosOdgovora, 0, 1); Grid.SetColumnSpan(unosOdgovora, 2); grid.Children.Add(collectionViewMjernaJedinica, 0, 2); Grid.SetColumnSpan(collectionViewMjernaJedinica, 2); grid.Children.Add(obavjestNakonOdgovora, 0, 3); Grid.SetColumnSpan(obavjestNakonOdgovora, 2); grid.Children.Add(prikaziOdgovorButton, 0, 4); Grid.SetColumnSpan(prikaziOdgovorButton, 1); grid.Children.Add(provjeriOdgovorButton, 1, 4); Grid.SetColumnSpan(provjeriOdgovorButton, 1); grid.Children.Add(generirajPitanjeButton, 0, 5); Grid.SetColumnSpan(generirajPitanjeButton, 2); Content = grid; }