Budowa aplikacji w technologii.net wykład 7 konwersja, walidacja, szablony, widoki
|
|
- Paweł Barański
- 5 lat temu
- Przeglądów:
Transkrypt
1 Budowa aplikacji w technologii.net wykład 7 konwersja, walidacja, szablony, widoki 1/85 <Window... Title="Księgarnia"> <Grid>... <ListBox Name="lista" DisplayMemberPath="Title"/> <GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Center"/> <Grid Grid.Column="2" DataContext="Binding ElementName=lista, Path=SelectedItem" >... <Label...>Tytuł:</Label> <TextBox... Text="Binding Path=Title" /> <Label...>Autor:</Label> <TextBox... Text="Binding Path=Author"/> <Label...>Cena:</Label> <TextBox... Text="Binding Path=Price"/> </Grid> </Grid> </Window>
2 2/85 public class Book public string Title get; set; public string Author get; set; public decimal Price get; set; public Book(string title, string author, decimal price) Title = title; Author = author; Price = price; List<Book> lst = new List<Book>(); lst.add(new Book("Lód", "Jacek Dukaj", 57.99M)); lst.add(new Book("Inne pieśni", "Jacek Dukaj", 48.50M));... lista.itemssource = lst;
3 3/85
4 4/85 Konwersja danych Odpowiada za konwertowanie źródłowych danych, zanim zostaną wyświetlone (np. z niskopoziomowej reprezentacji w postać czytelną dla użytkownika) oraz konwersję nowych wartości, nim zostaną zapamiętane. Używana jest do: formatowania danych (np. konwersja liczby na string), tworzenia obiektów WPF (np. przy wyświetlaniu obrazków), warunkowej modyfikacji pewnych własności elementów interfejsu.
5 Value Converter [ValueConversion(typeof(decimal), typeof(string))] public class PriceConverter : IValueConverter public object Convert(object value, Type targettype, object parameter, CultureInfo culture) decimal price = (decimal)value; return price.tostring("c", culture); public object ConvertBack(object value, Type targettype, object parameter, CultureInfo culture) string price = value.tostring(); decimal result; if (Decimal.TryParse(price, NumberStyles.Any, culture, out result)) return result; return value; 5/85
6 6/85 Value Converter Ustawienia języka: <Window... xmlns:local="clr-namespace:wpfapp1" Language="pl-PL"> Wybór konwertera: <Label Grid.Row="2" Margin="3">Cena:</Label> <TextBox Grid.Column="1" Grid.Row="2" Margin="3"> <TextBox.Text> <Binding Path="Price"> <Binding.Converter> <local:priceconverter/> </Binding.Converter> </Binding> </TextBox.Text> </TextBox>
7 7/85 Value Converter Konwerter w zasobach: <Window.Resources> <local:priceconverter x:key="priceconverter" /> </Window.Resources> Korzystanie: <TextBox Grid.Column="1" Grid.Row="2" Margin="3" Text="Binding Path=Price, Converter=StaticResource PriceConverter"/>
8 Value Converter 8/85
9 9/85 Tworzenie obiektów z Value Converterem Baza danych może przechowywać dane binarne reprezentujące obraz produktu. Konwerter pozwala skonwertować tablicę bajtów na obiekt klasy BitmapImage: tworzymy obiekt BitmapImage, odczytujemy dane obrazka w MemoryStream, wywołujemy BitmapImage.BeginInit(), ustawiamy własność StreamSource na nasz MemoryStream, wywołujemy EndInit() aby zakończyć ładowanie obrazka. Prostszy przykład: pole ImagePath przechowuje ścieżkę, a obrazki są zapisane na dysku.
10 Tworzenie obiektów z Value Converterem public class ImagePathConverter : IValueConverter private string imagedirectory = Directory.GetCurrentDirectory(); public string ImageDirectory get return imagedirectory; set imagedirectory = value; public object Convert(...) string imagepath = System.IO.Path.Combine(ImageDirectory, (string)value); return new BitmapImage(new Uri(imagePath)); public object ConvertBack(...) throw new NotSupportedException(); obrazek można odczytać też ze zdalnej lokacji: return new BitmapImage(new Uri( (string)value, UriKind.Absolute)); 10/85
11 11/85 Tworzenie obiektów z Value Converterem Wykorzystanie: <Window.Resources> <local:imagepathconverter x:key="imagepathconverter" /> </Window.Resources> <Image Margin="3" Grid.Row="3" Grid.Column="1" Stretch="Uniform" HorizontalAlignment="Center" Source="Binding Path=ImagePath, Converter=StaticResource ImagePathConverter"> W wypadku braku obrazka możemy łapać wyjątek w metodzie Convert() i np. zwracać Binding.DoNothing lub jakiś obrazek domyślny.
12 Tworzenie obiektów z Value Converterem 12/85
13 13/85 Formatowanie warunkowe public class PriceToBackgroundConverter : IValueConverter public decimal MaximumPriceToHighlight get; set; public Brush HighlightBrush get; set; public Brush DefaultBrush get; set; public object Convert(...) decimal price = (decimal)value; if (price <= MaximumPriceToHighlight) return HighlightBrush; else return DefaultBrush; public object ConvertBack(...) throw new NotSupportedException();
14 14/85 Formatowanie warunkowe <Window.Resources>... <local:pricetobackgroundconverter x:key="pricetobackgroundconverter" DefaultBrush="x:Null" HighlightBrush="GreenYellow" MaximumPriceToHighlight="29.99"/> </Window.Resources> <Grid DataContext="Binding ElementName=lista, Path=SelectedItem" Grid.Column="2" Background="Binding Path=Price, Converter=StaticResource PriceToBackgroundConverter">... </Grid>
15 Formatowanie warunkowe 15/85
16 16/85 MultiConverter Pozwala kilka własności skonwertować na jedną wartość. <Window.Resources> <local:pricevatconverter x:key="pricevatconverter" /> </Window.Resources> <TextBox Grid.Column="1" Grid.Row="2" Margin="3"> <TextBox.Text> <MultiBinding Converter="StaticResource PriceVatConverter"> <Binding Path="Price"></Binding> <Binding Path="VAT"></Binding> </MultiBinding> </TextBox.Text> </TextBox>
17 17/85 MultiConverter Wartości w tablicy values są w tej samej kolejności, co Bindingi w definicji w XAMLu. public class PriceVatConverter : IMultiValueConverter public object Convert(object[] values,...) try decimal price = (decimal)values[0]; decimal vat = (decimal)values[1]; return (price * (1 + vat)).tostring("c", culture); catch return Binding.DoNothing; public object[] ConvertBack(object value, Type[] t,...) throw new NotSupportedException();
18 MultiConverter 18/85
19 19/85 Walidacja Pozwala kontrolować poprawność danych przy przesyłaniu ich z elementu docelowego do źródła. Rzucanie wyjątku: private decimal price; public decimal Price get return price; set if (value <= 0) throw new ArgumentException( "Cena musi być większa od 0."); price = value;
20 20/85 Walidacja Wyjątki wiązania danych są ignorowane, dlatego potrzebujemy jeszcze reguły walidacji: <TextBox Grid.Column="1" Grid.Row="2" Margin="3"> <TextBox.Text> <Binding Path="Price"> <Binding.Converter> <StaticResource ResourceKey="PriceConverter"/> </Binding.Converter> <Binding.ValidationRules> <ExceptionValidationRule/> </Binding.ValidationRules> </Binding> </TextBox.Text> </TextBox>
21 Walidacja 21/85
22 22/85 Walidacja W wypadku nieudanej walidacji WPF: ustawia własność dołączoną Validation.HasError na true, tworzy ValidationError zawierający szczegóły błędu, jeśli ustawiono Binding.NotifyOnValidationError na true, podnosi zdarzenie Validation.Error. Zmienia się również wygląd kontrolki (wykorzystanie szablonu Validation.ErrorTemplate).
23 23/85 Walidacja Niekiedy nie chcemy rzucać wyjątków przy każdym błędzie użytkownika: public class Book : IDataErrorInfo... private decimal price; public decimal Price get return price; set price = value;
24 24/85 Walidacja public class Book : IDataErrorInfo... public string this[string columnname] get if (columnname == "Price") if (price <= 0) return "Cena musi być większa od 0."; return null; public string Error get return null;
25 25/85 Walidacja Inny przykład: public string this[string columnname] get if (propertyname == "Code") bool valid = true; foreach (char c in Code) if (!Char.IsLetterOrDigit(c)) valid = false; break; if (!valid) return "Może zawierać tylko cyfry i litery."; return null;
26 26/85 Walidacja <TextBox Grid.Column="1" Grid.Row="2" Margin="3"> <TextBox.Text> <Binding Path="Price"> <Binding.Converter> <StaticResource ResourceKey="PriceConverter"/> </Binding.Converter> <Binding.ValidationRules> <DataErrorValidationRule/> </Binding.ValidationRules> </Binding> </TextBox.Text> </TextBox> Możliwe jest łączenie obu podejść. Możemy skorzystać ze skrótu zamiast dodawać ExceptionValidationRule i DataErrorValidationRule, ustawiamy na true: Binding.ValidatesOnExceptions Binding.ValidatesOnDataErrors
27 Walidacja 27/85
28 28/85 Walidacja Własne reguły walidacji. public class PositivePriceRule : ValidationRule private decimal min = 0; private decimal max = Decimal.MaxValue; public decimal Min get return min; set min = value; public decimal Max get return max; set max = value;
29 29/85 Walidacja public class PositivePriceRule : ValidationRule... public override ValidationResult Validate(object value, CultureInfo culture) decimal price = 0; try if (((string)value).length > 0) price = Decimal.Parse((string)value, NumberStyles.Any, culture); catch return new ValidationResult(false, "Illegal characters.");
30 30/85 Walidacja... if ((price < Min) (price > Max)) return new ValidationResult(false, "Not in the range " + Min + " to " + Max + "."); else return new ValidationResult(true, null);
31 31/85 Walidacja <TextBox Grid.Column="1" Grid.Row="2" Margin="3"> <TextBox.Text> <Binding Path="Price"> <Binding.Converter> <StaticResource ResourceKey="PriceConverter"/> </Binding.Converter> <Binding.ValidationRules> <local:positivepricerule Min="0.01" Max="999.99" /> </Binding.ValidationRules> </Binding> </TextBox.Text> </TextBox> Uwaga: możemy dodać dowolną liczbę reguł walidacji.
32 Walidacja 32/85
33 33/85 Walidacja Reakcja na błędy walidacji: flaga NotifyOnValidationError: <Binding Path="Price" NotifyOnValidationError="True">... </Binding> zdarzenie: <Grid Validation.Error="validationError"> obsługa: private void validationerror(object sender,...) if (e.action == ValidationErrorEventAction.Added) MessageBox.Show(e.Error.ErrorContent.ToString());
34 Walidacja 34/85
35 35/85 Walidacja Lista błędów walidacji: private void cmdok_click(object sender, RoutedEventArgs e) string message; if (FormHasErrors(out message)) // Errors still exist. MessageBox.Show(message); else //...
36 36/85 Walidacja private bool FormHasErrors(out string message) StringBuilder sb = new StringBuilder(); GetErrors(sb, gridproductdetails); message = sb.tostring(); return message!= "";
37 Walidacja private void GetErrors(StringBuilder sb, DependencyObject obj) foreach (object child in LogicalTreeHelper.GetChildren(obj)) TextBox element = child as TextBox; if (element == null) continue; if (Validation.GetHasError(element)) sb.append(element.text + " has errors:\r\n"); foreach (ValidationError error in Validation.GetErrors(element)) sb.append(" " + error.errorcontent.tostring()); sb.append("\r\n"); // sprawdź dzieci GetErrors(sb, element); 37/85
38 38/85 Walidacja Własne style powiadomienia: <TextBox Grid.Column="1" Grid.Row="2" Margin="3,3,20,3"> <Validation.ErrorTemplate> <ControlTemplate> <DockPanel LastChildFill="True"> <TextBlock DockPanel.Dock="Right" Foreground="Red" FontSize="14" FontWeight="Bold">*</TextBlock> <Border BorderBrush="Green" BorderThickness="1"> <AdornedElementPlaceholder /> </Border> </DockPanel> </ControlTemplate> </Validation.ErrorTemplate> <TextBox.Text>... </TextBox.Text> </TextBox>
39 Walidacja 39/85
40 40/85 Walidacja <TextBlock... ToolTip="Binding ElementName=adornerPlaceholder, Path=AdornedElement.(Validation.Errors)[0].ErrorContent">*</TextBlock>... <AdornedElementPlaceholder Name="adornerPlaceholder" />
41 41/85 Szablony danych Fragment kodu XAMLa, który mówi w jaki sposób ma być wyświetlany dowiązany obiekt danych: kontrolki zawartości obsługują to poprzez własność ContentTemplate kontrolki list poprzez ItemTemplate (stosowane do każdego obiektu kolekcji) Pozwala zastąpić to: <ListBox Name="lista" Margin="5" DisplayMemberPath="Title"/> Tym: <ListBox Name="lista" Margin="5"> <ListBox.ItemTemplate> <DataTemplate> <TextBlock Text="Binding Path=Title"/> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
42 Szablony danych 42/85
43 43/85 Szablony danych <ListBox Name="lista" Margin="5" HorizontalContentAlignment="Stretch"> <ListBox.ItemTemplate> <DataTemplate> <Border Margin="5" BorderThickness="1" BorderBrush="SteelBlue" CornerRadius="4"> <Grid Margin="3"> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <TextBlock FontWeight="Bold" Text="Binding Path=Title"></TextBlock> <TextBlock Grid.Row="1" Text="Binding Path=Author"></TextBlock> </Grid> </Border> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
44 Szablony danych 44/85
45 45/85 Szablony danych Umieszczanie szablonów w zasobach: <Window.Resources>... <DataTemplate x:key="bookdatatemplate"> <Border Margin="5" BorderThickness="1" BorderBrush="SteelBlue" CornerRadius="4"> <Grid Margin="3"> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <TextBlock FontWeight="Bold" Text="Binding Path=Title"></TextBlock> <TextBlock Grid.Row="1" Text="Binding Path=Author"></TextBlock> </Grid> </Border> </DataTemplate> </Window.Resources>
46 46/85 Szablony danych Korzystanie z szablonów umieszczonych w zasobach: <ListBox Name="lista" Margin="5" HorizontalContentAlignment="Stretch" ItemTemplate="StaticResource BookDataTemplate"/>
47 Szablony danych <DataTemplate x:key="bookdatatemplate"> <Border...> <Grid Margin="3"> <Grid.RowDefinitions> <RowDefinition/><RowDefinition/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="auto" SharedSizeGroup="ikona"></ColumnDefinition> <ColumnDefinition ></ColumnDefinition> </Grid.ColumnDefinitions> <TextBlock Grid.Column="1" FontWeight="Bold" Text="Binding Path=Title"></TextBlock> <TextBlock Grid.Column="1" Grid.Row="1" Text="Binding Path=Author"></TextBlock> <Image Grid.RowSpan="2" MaxHeight="64" Source="Binding Path=ImagePath, Converter=StaticResource ImagePathConverter"> </Image> </Grid> </Border> </DataTemplate> 47/85
48 48/85... <Grid Name="gridProductDetails" Grid.IsSharedSizeScope="True"> <ListBox Name="lista" Margin="5" HorizontalContentAlignment="Stretch" ItemTemplate="StaticResource BookDataTemplate"/>
49 Szablony danych 49/85
50 50/85 Szablony danych <DataTemplate x:key="bookdatatemplate">... <Button Click="cmdDoKoszyka" Tag="Binding Path=ProductID">Do koszyka...</button> </DataTemplate> private void cmddokoszyka(object sender, RoutedEventArgs e) Button cmd = (Button)sender; int productid = (int)cmd.tag; //...
51 51/85 Szablony danych Inne rozwiązanie: <DataTemplate x:key="bookdatatemplate">... <Button Click="cmdDoKoszyka" Tag="Binding"> Do koszyka...</button> </DataTemplate> private void cmddokoszyka(object sender, RoutedEventArgs e) Button cmd = (Button)sender; Book book = (Book)cmd.Tag; lista.selecteditem = book; //...
52 Szablony danych 52/85
53 53/85 Szablony danych Różnicowanie szablonów danych: <DataTemplate x:key="bookdatatemplate"> <Border... Background="Binding Path=Price, Converter=StaticResource PriceToBackgroundConverter">... </Border> </DataTemplate>
54 Szablony danych 54/85
55 Szablony danych Wybór szablonów: public class BookTemplateSelector : DataTemplateSelector public override DataTemplate SelectTemplate(object item, DependencyObject container) Book product = (Book)item; Window window = Application.Current.MainWindow; if (product.categoryname == "Horror") return (DataTemplate)window.FindResource("HorrorBookTemplate"); else return (DataTemplate)window.FindResource("DefaultBookTemplate"); 55/85
56 56/85 Szablony danych <Window.Resources> <DataTemplate x:key="defaultbooktemplate">... </DataTemplate> <DataTemplate x:key="horrorbooktemplate"> <Border Margin="5" BorderThickness="2" BorderBrush="Red" CornerRadius="4" Background="Black" TextBlock.Foreground="White">... </Border> </DataTemplate> </Window.Resources> <ListBox Name="lista" Margin="5" HorizontalContentAlignment="Stretch"> <ListBox.ItemTemplateSelector> <local:booktemplateselector/> </ListBox.ItemTemplateSelector> </ListBox>
57 Szablony danych 57/85
58 58/85 Szablony danych Lepsze (bardziej uniwersalne) rozwiązanie: public class SingleCriteriaHighlightTemplateSelector : DataTemplateSelector public DataTemplate DefaultTemplate get; set; public DataTemplate HighlightTemplate get; set; public string PropertyToEvaluate get; set; public string PropertyValueToHighlight get; set; public override DataTemplate SelectTemplate(object item, DependencyObject container) Product product = (Product)item; Type type = product.gettype(); PropertyInfo property = type.getproperty(propertytoevaluate);
59 59/85 if (property.getvalue(product, null).tostring() == PropertyValueToHighlight) return HighlightTemplate; else return DefaultTemplate;
60 60/85 Szablony danych <ListBox Name="lista" HorizontalContentAlignment="Stretch"> <ListBox.ItemTemplateSelector> <local:singlecriteriahighlighttemplateselector DefaultTemplate="StaticResource DefaultBookTemplate" HighlightTemplate="StaticResource HorrorBookTemplate" PropertyToEvaluate="CategoryName" PropertyValueToHighlight="Horror" > </local:singlecriteriahighlighttemplateselector> </ListBox.ItemTemplateSelector> </ListBox>"> Uwaga: wybór szablonu następuje raz, w momencie tworzenia dowiązania. Jeśli zmiana stanu obiektu może wymagać wyboru innego szablonu, możemy wymusić to ręcznie (np. w PropertyChanged): DataTemplateSelector selector = lista.itemtemplateselector; lista.itemtemplateselector = null; lista.itemtemplateselector = selector;
61 61/85 Zmiana układu listy Możemy zastąpić domyślny kontener listy: <ListBox Name="lista" Margin="5" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> <ListBox.ItemTemplateSelector> <local:booktemplateselector/> </ListBox.ItemTemplateSelector> <ListBox.ItemsPanel> <ItemsPanelTemplate> <WrapPanel></WrapPanel> </ItemsPanelTemplate> </ListBox.ItemsPanel> </ListBox>
62 Zmiana układu listy 62/85
63 63/85 Widoki danych Data Views Widok znajduje się pomiędzy źródłem danych a powiązaną kontrolką. To widok śledzi aktualny element listy, udostępnia sortowanie, filtrowanie, grupowanie. Widok jest typu: BindingListCollectionView jeśli źródło danych jest typu IbindingList, ListCollectionView jeśli źródło nie jest typu IbindingList, ale Ilist CollectionView jeśli nie jest ani IbindingList, ani Ilist, a tylko Ienumerable. Dostęp do widoku: ICollectionView view = CollectionViewSource.GetDefaultView(lista.ItemsSource);
64 64/85 Widoki danych filtrowanie Pozwala pokazać jedynie podzbiór rekordów listy spełniających pewne warunki. ListCollectionView view = (ListCollectionView)CollectionViewSource.GetDefaultView(lista.ItemsSource); view.filter = FilterBook; public bool FilterBook(Object item) Book product = (Book)item; return (product.price> 100); albo: view.filter = delegate(object item) Book product = (Book)item; return (product.price > 30); ;
65 Widoki danych filtrowanie 65/85
66 Widoki danych filtrowanie public class ProductByPriceFilter public decimal MinimumPrice get; set; public ProductByPriceFilter(decimal minimumprice) MinimumPrice = minimumprice; public bool FilterItem(Object item) Book product = item as Book; if (product!= null) return (product.price > MinimumPrice); return false; 66/85
67 67/85 Widoki danych filtrowanie private void cmdfilter_click(object sender,...) decimal minimumprice; if (Decimal.TryParse(txtMinPrice.Text, out minimumprice)) ListCollectionView view = CollectionViewSource.GetDefaultView(lista.ItemsSource) as ListCollectionView; if (view!= null) ProductByPriceFilter filter = new ProductByPriceFilter(minimumPrice); view.filter = filter.filteritem; Usunięcie filtra: view.filter = null;
68 68/85 Widoki danych filtrowanie Uwaga: nie można łączyć kilku filtrów należy raczej zaprojektować filtr z wieloma warunkami.
69 69/85 Widoki danych sortowanie Sortowanie na podstawie wskazanej własności danych: ListCollectionView view = (ListCollectionView)CollectionViewSource.GetDefaultView(lista.ItemsSource); view.sortdescriptions.add(new SortDescription("Title", ListSortDirection.Ascending));
70 Widoki danych sortowanie 70/85
71 71/85 Widoki danych sortowanie Własna procedura sortowaniea (tylko dla ListCollectionView). public class SortByNameLength : System.Collections.IComparer public int Compare(object x, object y) Book bookx = (Book)x; Book booky = (Book)y; return bookx.title.length.compareto(booky.title.length); view.customsort = new SortByNameLength();
72 Widoki danych sortowanie 72/85
73 73/85 Widoki danych grupowanie Jest zbliżone do sortowania: view.groupdescriptions.add(new PropertyGroupDescription("Author"));
74 Widoki danych grupowanie 74/85
75 75/85 Widoki danych grupowanie A na czym polega różnica? Czyli: jak rozróżnić grupy? ItemsControl.GroupStyle: ContainerStyle styl dla każdego elementu grupy ContainerStyleSelector HeaderTemplate nagłówek dla grupy HeaderTemplateSelector Panel wybór panelu przechowującego grupę
76 76/85 Widoki danych grupowanie <ListBox...> <ListBox.GroupStyle> <GroupStyle> <GroupStyle.HeaderTemplate> <DataTemplate> <TextBlock Text="Binding Path=Name" FontWeight="Bold" Foreground="White" Background="LightGreen" Margin="0,5,0,0" Padding="3"/> </DataTemplate> </GroupStyle.HeaderTemplate> </GroupStyle> </ListBox.GroupStyle> </ListBox> Uwaga: nie dowiązujemy do obiektu danych, ale do PropertyGroupDescription, stąd własność Name.
77 Widoki danych grupowanie 77/85
78 78/85 Widoki danych grupowanie Grupowanie przedziałami: public class PriceRangeProductGrouper : IValueConverter public int GroupInterval get; set; public object Convert(object value, Type targettype, object parameter, CultureInfo culture) decimal price = (decimal)value;
79 79/85 if (price < GroupInterval) return String.Format(culture, "Mniej niż 0:C", GroupInterval); else int interval = (int)price / GroupInterval; int lowerlimit = interval * GroupInterval; int upperlimit = (interval + 1) * GroupInterval; return String.Format(culture, "0:C 1:C", lowerlimit, upperlimit); public object ConvertBack(...) throw new NotSupportedException( "This converter is for grouping only.");
80 80/85 Widoki danych grupowanie view.sortdescriptions.add(new SortDescription("Price", ListSortDirection.Ascending)); PriceRangeProductGrouper grouper = new PriceRangeProductGrouper(); grouper.groupinterval = 10; view.groupdescriptions.add(new PropertyGroupDescription("Price", grouper));
81 Widoki danych grupowanie 81/85
82 82/85 Widoki danych nawigacja Widok udostępnia metody i własności służące do nawigacji, np. Count, CurrentItem, CurrentPosition, MoveCurrentToFirst(), MoveCurrentToLast(), MoveCurrentToNext(), MoveCurrentToPrevious(), MoveCurrentToPosition(). Można to robić nawet bez listy: <Window...>... <Grid>... <Label...>Tytuł:</Label> <TextBox...Text="Binding Path=Title" /> <Label...>Autor:</Label> <TextBox...Text="Binding Path=Author"/>... <Button Name="cmdPrev"...><</Button> <TextBlock Name="lblPosition".../> <Button Name="cmdNext"...>></Button> </Grid> </Window>
83 83/85 Widoki danych nawigacja W klasie okna zadeklarujmy referencję na widok: private ListCollectionView view; W momencie ładowania okna stwórzmy lub załądujmy listę danych i pobierzmy widok: List<Book> lst = new List<Book>(); lst.add(...);... this.datacontext = lst; view = (ListCollectionView)CollectionViewSource.GetDefaultView(this. DataContext); view.currentchanged += view_currentchanged;
84 84/85 Widoki danych nawigacja private void view_currentchanged(object sender, EventArgs e) lblposition.text = "Pozycja " + (view.currentposition+1).tostring() + " z " + view.count.tostring(); cmdprev.isenabled = view.currentposition > 0; cmdnext.isenabled = view.currentposition < view.count-1; private void cmdprev_click(object sender, RoutedEventArgs e) view.movecurrenttoprevious(); private void cmdnext_click(object sender, RoutedEventArgs e) view.movecurrenttonext();
85 Widoki danych nawigacja 85/85
Programownie w technologii.net wykład 6 Element Binding i Data Binding
Programownie w technologii.net wykład 6 Element Binding i Data Binding 1/41 Element Binding Mechanizm, który pozwala wydobyć pewne informacje z obiektu źródłowego i zapisać je w pewnym obiekcie docelowym.
Bardziej szczegółowoRozwój aplikacji modułowych Paweł Brudnicki. Dodanie modułu
Rozwój aplikacji modułowych Paweł Brudnicki Moduł jest podstawową jednostką funkcjonalności. Stanowi on część, która może być niezależnie pisana, testowana a nawet wdrażana. W przewodniku dodamy niezależny
Bardziej szczegółowoPrzewodnik krok po kroku:
Przewodnik krok po kroku: Aplikacja jest rozbudowywana. Jej podstawą jest: https://msdn.microsoft.com/enus/library/ff921174(v=pandp.40).aspx Do aplikacji dodajemy nowy moduł, który posłuży nam do dodawania
Bardziej szczegółowoProgramowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych
Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,
Bardziej szczegółowoxmlns:prism=http://www.codeplex.com/prism c. <ContentControl prism:regionmanager.regionname="mainregion" />
1 Tworzenie Shella a. W pierwszej kolejności tworzymy nowy projekt: WPF Application. Name: Shell SolutionName: PrismApp b. Dodajemy bibliotekę PRISM za pomocą NuGet Managera (dla.net Framework 4.5 Prism
Bardziej szczegółowoMVVM Light Toolkit Przewodnik krok po kroku
Julita Borkowska 242817 MVVM Light Toolkit Przewodnik krok po kroku W celu lepszego zrozumienia elementów MVVM Light Toolkit przedstawionych w prezentacji, zostanie poniżej krok po kroku napisany program
Bardziej szczegółowoZdarzenia i polecenia
WPF Programowanie w środowisku Windows Wykład 10-1 Zdarzenia i polecenia Wykład 10-2 Zdarzenia Metoda obsługi zdarzenia może być do niego przypisana w kodzie C# lub w XAML
Bardziej szczegółowoProgramowanie obiektowe i zdarzeniowe
Programowanie obiektowe i zdarzeniowe wkład 2 klas i obiekt namespace ConsoleApplication1 // współrzędne punktu int, ; Jak zdefiniować w programie punkt? = 3; = 2; Może tak? // wpisanie informacji Console.WriteLine("
Bardziej szczegółowoProgramowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego
Programowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego 1/34 Wymagania wstępne: Znajomość podstaw programowania. Efekty kształcenia: Umiejętność tworzenia prostych aplikacji
Bardziej szczegółowoAby nadać jej pożądaną postać należy w pliku Window1.xaml stworzyć definicję swojego stylu modyfikując ręcznie postać zapisu XAML:
Lab8 WPF Zad1 : - lista z językami i flagami + wiązanie danych z obiektu przerabiana na ComboBox - fisheye przegląd obrazków lupa (obrazki umieszczone na sztywno) - wyświetlenie galerii zdjęć zapisanej
Bardziej szczegółowoInstrukcja laboratoryjna cz.3
Języki programowania na platformie.net cz.2 2015/16 Instrukcja laboratoryjna cz.3 Język C++/CLI Prowadzący: Tomasz Goluch Wersja: 2.0 I. Utworzenie projektu C++/CLI z interfejsem graficznym WPF 1 Cel:
Bardziej szczegółowoInstrukcja laboratoryjna cz.4
Programowanie aplikacji internetowych 2015/2016 Instrukcja laboratoryjna cz.4 Aplikacje na Windows 8.x Store (C# i XAML) Prowadzący: Tomasz Goluch Wersja: 1.1 I. Wprowadzenie 1 Cel: Przekazanie podstawowych
Bardziej szczegółowoLogger. Następnie w klasie Bootstrapper muimy zarejestrować nasz nowy logger:
Logger Na początku stworzymy własny logger. Do tego calu trzeba utworzyć klasę naszego loggera, która będzie implementować interfejs ILoggerFacade. Oto kod tej klasy: public class SimpleLogger: ILoggerFacade
Bardziej szczegółowoRozpoczynając wywód na temat MVVM należy najpierw zadań sobie kilka podstawowych pytań na temat MVVM jako wzorca projektowego :
Slajd3 Dlaczego MVVM? Rozpoczynając wywód na temat MVVM należy najpierw zadań sobie kilka podstawowych pytań na temat MVVM jako wzorca projektowego : Czy musisz dzielić projekt z projektantem (grafikiem
Bardziej szczegółowoProgramowanie w technologii.net wykład 4 Aplikacja i okna
Programowanie w technologii.net wykład 4 Aplikacja i okna 1/30 Aplikacja Aplikacja WPF jest reprezentowana przez instancję klasy System.Windows.Application. pilnuje ona kiedy program się uruchamia i kończy
Bardziej szczegółowoWykład 12. Programowanie serwera MS SQL 2005 w C#
Wykład 12 Programowanie serwera MS SQL 2005 w C# Budowa procedur składowanych w C# Budowa funkcji składowanych w C# Wykorzystanie funkcji składowanych w C# po stronie klienta Tworzenie typów definiowanych
Bardziej szczegółowo1. Wprowadzenie do WPF i XAML. Tworzenie interfejsu użytkownika.
Tematy zajęć: 1. Wprowadzenie do WPF i XAML. Tworzenie interfejsu użytkownika. 2. Posługiwanie się podstawowymi kontrolkami. 3. Własności i zdarzenia w WPF. 4. Zadania aplikacji. Okna. 5. Polecenia. Zasoby.
Bardziej szczegółowoProgramowanie w technologii.net wykład 8 Style, listy, drzewa, toolbary, menu
Programowanie w technologii.net wykład 8 Style, listy, drzewa, toolbary, menu 1/70 Podstawy Chcąc wielokrotnie wykorzystać pewne ustawienia stylu, może zdefiniować je w zasobach:
Bardziej szczegółowoBEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska
BEAN VALIDATION Waldemar Korłub Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska Bean Validation Uniwersalny mechanizm walidacji danych we wszystkich warstwach aplikacji Warstwa interfejsu,
Bardziej szczegółowoKurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016
Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa
Bardziej szczegółowoModele zawartości. WPF wykorzystuje 4 modele zawartości kontrolek: ContentControl pojedyncza zawartość
WPF Programowanie w środowisku Windows Wykład 8-1 Kontrolki Modele zawartości WPF wykorzystuje 4 modele zawartości kontrolek: ContentControl pojedyncza zawartość Wykład 8-2 używane przez: Button, ButtonBase,
Bardziej szczegółowoInstrukcja laboratoryjna cz.7
Programowanie aplikacji internetowych 2013/2014 Instrukcja laboratoryjna cz.7 Aplikacje na Windows Store Prowadzący: Tomasz Goluch Wersja: 1.1 I. Wprowadzenie 1 Cel: Przekazanie podstawowych informacje
Bardziej szczegółowoProgramowanie Komputerów
Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 28 1. Tablice w C# Indeksowane od zera
Bardziej szczegółowo- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy
Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy - Narzędzie Windows Forms - Przykładowe aplikacje 1 Narzędzia Windows Form Windows Form jest narzędziem do tworzenia aplikacji dla
Bardziej szczegółowoWykład 2 Wybrane konstrukcje obiektowych języków programowania (1)
MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki W językach niskopoziomowych błędy zgłaszane były przez zwracanie odpowiedniego statusu (liczby) W C main() zwraca int żeby można było określić
Bardziej szczegółowoLaboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7
Instrukcja 7 Laboratoria 9, 10 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji
Bardziej szczegółowoLeszek Stasiak Zastosowanie technologii LINQ w
Leszek Stasiak Zastosowanie technologii LINQ w C# 1. Wstęp - połączenie Do naszych zadań będziemy używać Microsoft Visual Studio 2010. Stwórzmy nowy projekt Windows Form Application. Mając do dyspozycji
Bardziej szczegółowoWykład 5 Okna MDI i SDI, dziedziczenie
Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie
Bardziej szczegółowoWyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w
Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w obrębie skryptu. Wyrażenia include() i require() są niemal
Bardziej szczegółowoProxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.
Proxy (pełnomocnik) Cel: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego. Zastosowanie: Wszędzie tam, gdzie oczekujemy bardziej zaawansowanego odwołania do obiektu, niż zwykły
Bardziej szczegółowoLaboratorium 10 - Web Services
Laboratorium 10 - Web Services W ramach laboratorium zapoznamy się z koncepcją Web Service ów (odmiana point-to-point Web Service). W kolejnych krokach utworzony zostanie projekt, w którym wykorzystana
Bardziej szczegółowoProgramowanie Obiektowe Ćwiczenie 4
Programowanie Obiektowe Ćwiczenie 4 1. Zakres ćwiczenia wyjątki kompozycja 2. Zagadnienia Założeniem, od którego nie należy odbiegać, jest by każdy napotkany problem (np. zatrzymanie wykonywanej metody)
Bardziej szczegółowoInformatyka II. Laboratorium Aplikacja okienkowa
Informatyka II Laboratorium Aplikacja okienkowa Założenia Program będzie obliczał obwód oraz pole trójkąta na podstawie podanych zmiennych. Użytkownik będzie poproszony o podanie długości boków trójkąta.
Bardziej szczegółowoProgramowanie telefonów z Windows Phone 7, cz. 4
Programowanie telefonów z Windows Phone 7, cz. 4 Piotr M. Szczypiński Instytut Elektroniki Politechniki Łódzkiej http://www.eletel.p.lodz.pl/pms/ piotr.szczypinski@p.lodz.pl Budynek B9, II piętro, pokój
Bardziej szczegółowoRozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych
Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych Jacek Matulewski Materiały dla Podyplomowego Studium Programowania i Zastosowania Komputerów, sekcja Projektowanie i tworzenie aplikacji
Bardziej szczegółowoASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3
3 ASP.NET MVC Podstawy 1 1. Cel zajęć Celem zajęć jest zapoznanie się z podstawami ASP.NET MVC 2.0 Framework. 2. Zadanie Proszę zbudować prostą aplikację WWW przy zastosowaniu framework a ASP.NET MVC 2.0
Bardziej szczegółowoLaboratorium programowania urządzeń mobilnych
Laboratorium programowania urządzeń mobilnych Wprowadzenie Hierarcha klas dla aplikacji typu Silverlight tworzonej przez Visual Studio jest następująca: Obsługa ekranu W urządzeniach z Windows Phone 7
Bardziej szczegółowoZaawansowane aplikacje WWW - laboratorium
Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w
Bardziej szczegółowoRealizacja Aplikacji Internetowych 2013 laboratorium cz. 2 K.M. Ocetkiewicz
Realizacja Aplikacji Internetowych 2013 laboratorium cz. 2 K.M. Ocetkiewicz Walidacja po stronie klienta: - w MVC 3 i 4 domyślnie jest włączona także walidacja po stronie klienta - wykorzystuje ona JavaScript
Bardziej szczegółowoInstrukcja laboratoryjna nr.4
Języki programowania na platformie.net cz.2 2016/17 Instrukcja laboratoryjna nr.4 Język Visual Basic for.net Prowadzący: Tomasz Goluch Wersja: 3.1 I. Współpraca Visual Basic z C# Cel: Wykorzystanie w kodzie
Bardziej szczegółowoLista, Stos, Kolejka, Tablica Asocjacyjna
Lista, Stos, Kolejka, Tablica Asocjacyjna Listy Lista zbiór elementów tego samego typu może dynamicznie zmieniać rozmiar, pozwala na dostęp do poszczególnych elementów Typowo dwie implementacje: tablicowa,
Bardziej szczegółowoPOLITECHNIKA POZNAŃSKA. Oprogramowanie dla telefonów z systemem Windows Phone 8 obsługujących technologię NFC do sprawdzania listy obecności.
POLITECHNIKA POZNAŃSKA Oprogramowanie dla telefonów z systemem Windows Phone 8 obsługujących technologię NFC do sprawdzania listy obecności. Programowanie Kart Elektronicznych Systemy Informatyczne w Zarządzaniu
Bardziej szczegółowoPlatforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact
Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013 Prowadzący: mgr inż. Tomasz Jaworski Strona WWW: http://tjaworski.kis.p.lodz.pl/ Visual Basic.NET dostęp do bazy danych Baza Microsoft SQL Server Compact
Bardziej szczegółowoLaboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6
Instrukcja 6 Laboratorium 8 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji
Bardziej szczegółowoPlatformy Programistyczne Podstawy języka Java
Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo
Bardziej szczegółowoProgramowanie w środowiskach graficznych. Wykład 3 Język C#
Programowanie w środowiskach graficznych Wykład 3 Język C# 1 Zagadnienia 1. Wprowadzenie 2. Przestrzenie nazw 3. Typy, parametry, konwersje 4. Klasy 5. Instrukcje sterujące 6. Właściwości 7. Interfejsy,
Bardziej szczegółowoKurs programowania. Wykład 9. Wojciech Macyna
Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy
Bardziej szczegółowoTechniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
Bardziej szczegółowoBazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r.
Bazy danych dla producenta mebli tapicerowanych Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r. Założenia Stworzyć system bazodanowy dla małej firmy produkującej meble tapicerowane. Projekt ma umożliwić
Bardziej szczegółowoAlgorytmy i Struktury Danych. Anna Paszyńska
Algorytmy i Struktury Danych Anna Paszyńska Tablica dynamiczna szablon Array Zbiory Zbiory template class Container {public: virtual ~Container() { }; virtual int Count() const = 0;
Bardziej szczegółowoPodstawowe kontrolki graficzne. Obsługa plików poprzez kontrolki
Podstawowe kontrolki graficzne Obsługa plików poprzez kontrolki Komponent OpenFileDialog Komponent służący do otwierania dowolnych plików. Użytkownik programu wybiera jaki plik, chce odczytać Można nałożyć
Bardziej szczegółowoWspółbieżność w środowisku Java
Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych
Bardziej szczegółowoSTWORZENIE MOBILNEJ APLIKACJI,
LABORATORIUM SYSTEMÓW MOBILNYCH STWORZENIE MOBILNEJ APLIKACJI, WYŚWIETLAJĄCEJ AKTUALNĄ POZYCJĘ UŻYTKOWNIKA, LISTĘ WIDOCZNYCH SATELITÓW ORAZ ICH POZYCJĘ I. Temat ćwiczenia Stworzenie mobilnej aplikacji,
Bardziej szczegółowoSystemy Rozproszone. Spis treści. Temat projektu: Regułowy system analizujacy logi. autorzy: Rafał Sadłowski, Sebastian Falkus, Michał Różycki
Systemy Rozproszone Temat projektu: Regułowy system analizujacy logi Spis treści autorzy: Rafał Sadłowski, Sebastian Falkus, Michał Różycki Cel Projektu...2 Dane aplikacji...2 Technologia...2 Zarządzanie
Bardziej szczegółowoProgramowanie telefonów z Windows Phone 7, cz. 2
Programowanie telefonów z Windows Phone 7, cz. 2 Piotr M. Szczypiński Instytut Elektroniki Politechniki Łódzkiej http://www.eletel.p.lodz.pl/pms/ piotr.szczypinski@p.lodz.pl Budynek B9, II piętro, pokój
Bardziej szczegółowousing System;... using System.Threading;
Kontekst synchronizacji Wątek w platformie.net może posiadać kontekst synchronizacji reprezentowany przez instancję klasy SynchronizationContext lub jej klasy potomnej. Jeżeli wątek posiada taki kontekst
Bardziej szczegółowoProgramowanie obiektowe i zdarzeniowe wykład 3 Okna i kontrolki
Programowanie obiektowe i zdarzeniowe wykład 3 Okna i kontrolki
Bardziej szczegółowoKLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Problem: Jak zaimplementować stos? Co się stanie gdy dodamy do stosu obiekt typu Czlowiek? Co się stanie, gdy spróbujemy ten obiekt odczytać
Bardziej szczegółowoKlasy i obiekty cz II
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy
Bardziej szczegółowoĆwiczenie 1. Kolejki IBM Message Queue (MQ)
Ćwiczenie 1. Kolejki IBM Message Queue (MQ) 1. Przygotowanie Przed rozpoczęciem pracy, należy uruchomić "Kreator przygotowania WebSphere MQ" oraz przejść przez wszystkie kroki kreatora, na końcu zaznaczając
Bardziej szczegółowoDiagram stanów Laboratorium 9
Diagram stanów Laboratorium 9 Zofia Kruczkiewicz Zofia Kruczkiewicz lab_inp002017_9 1 Modelowanie zachowania obiektu za pomocą diagramu stanów. Opracowanie diagramu stanów dla obiektu wybranej klasy, reprezentującego
Bardziej szczegółowoProgramowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków
Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................
Bardziej szczegółowoZastosowanie słuchaczy zdarzeń wg
Zastosowanie słuchaczy zdarzeń wg https://docs.oracle.com/javaee/7/jeett.pdf Technologie internetowe 6 1. Obsługa zdarzeń typu valuechangelistener Rejestracja słuchaczy zdarzeń typu valuechangelistener
Bardziej szczegółowoDawid Gierszewski Adam Hanasko
Dawid Gierszewski Adam Hanasko Chcemy stworzyć klasę w której możemy przechowywać dwie zmienne dowolnych typów Tworzymy tyle różnych klas ile potrzeba: Class ParaInt{ int pierwszy; Int drugi; Class ParaButow{
Bardziej szczegółowoSWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.
SWING c.d. ZAGADNIENIA: przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe. MATERIAŁY: http://docs.oracle.com/javase/tutorial/uiswing/dnd/ http://th-www.if.uj.edu.pl/zfs/ciesla/
Bardziej szczegółowoMVVM i XAML w Visual Studio 2015 / Jacek Matulewski. Gliwice, cop Spis treści
MVVM i XAML w Visual Studio 2015 / Jacek Matulewski. Gliwice, cop. 2016 Spis treści Część I Wzorzec MVVM. Podstawy XAML 7 Rozdział 1. Szybkie wprowadzenie do XAML 9 Wzorzec widoku autonomicznego 9 Tworzenie
Bardziej szczegółowoKomputerowe systemy na rynkach finansowych. wykład 5. MQL4 - funkcje operujące na obiektach wykresu
Komputerowe systemy na rynkach finansowych wykład 5 MQL4 - funkcje operujące na obiektach wykresu ObjectCreate - funkcja tworzy nowy obiekt graficzny, określonego typu oraz nadaje mu nazwę i przyporządkowuje
Bardziej szczegółowoInżynieria Programowania Laboratorium 6 Pierwsza finalna wersja. Paweł Paduch paduch@tu.kielce.pl
Inżynieria Programowania Laboratorium 6 Pierwsza finalna wersja Paweł Paduch paduch@tu.kielce.pl 25-05-2013 Rozdział 1 Wstęp Dzisiejsze zajęcia będą kontynuacją implementowania interfejsu. Skupimy się
Bardziej szczegółowoKurs programowania. Wykład 6. Wojciech Macyna. 7 kwietnia 2016
Wykład 6 7 kwietnia 2016 Klasa java.applet.applet Aplety w języku Java Aplety sa specyficznymi programami które moga być wyświetlane w oknach większości przegladarek internetowych. Klasa Applet rozszerza
Bardziej szczegółowoWzorce logiki dziedziny
Wzorce logiki dziedziny 1. Wzorce logiki dziedziny skrypt transakcji (Transaction Script), brama tabeli (Table Data Gateway), model dziedziny (Domain model), strategia (Strategy), moduł tabeli (Table Module),
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
Bardziej szczegółowoRys. 3. Kod elementów na stronie po dodaniu kontrolek podstawowych.
1 2 Kontrolki standardowe WP7 Michał Ręczkowicz, Opublikowano: 2012-02-08 http://msdn.microsoft.com/pl-pl/library/rozpoczecie-pracy-z-windows-phone--kontrolki-standardowe W tym samouczku dowiesz się, jakie
Bardziej szczegółowoKLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Bardziej szczegółowoTestowanie II. Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage).
Testowanie II Cel zajęć Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage). Pokrycie kodu testami Jak już była mowa na poprzednich
Bardziej szczegółowoUML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.
UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami
Bardziej szczegółowoJęzyki i metodyka programowania. Język C# pętle, sterowanie, wyjątki
Język C# pętle, sterowanie, wyjątki Język C# pętle Pętle: while ( ) do { while ( ); for ( ; ; ) foreach ( in
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w
Bardziej szczegółowoProgramowanie w środowiskach graficznych. Wykład 4 Język C# cd
Programowanie w środowiskach graficznych Wykład 4 Język C# cd 1 Wyjątki Służą do raportowania i obsługi sytuacji wyjątkowych (błędów, które można w jakiś sposób naprawić). Instrukcje, które mogą się z
Bardziej szczegółowoMetodyki zwinne wytwarzania oprogramowania
Metodyki zwinne wytwarzania oprogramowania Wykład 7 Marcin Młotkowski 23 listopada 2016 Plan wykładu 1 2 3 Kilka negatywnych przykładów Marcin Młotkowski Metodyki zwinne wytwarzania oprogramowania 2 /
Bardziej szczegółowoKurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Bardziej szczegółowoLaboratorium 8 Diagramy aktywności
Laboratorium 8 Diagramy aktywności Zofia Kruczkiewicz Zofia Kruczkiewicz Lab_INP002017_8 1 Modelowanie zachowania obiektów za pomocą diagramów aktywności. Modelowanie zachowania obiektów za pomocą diagramów
Bardziej szczegółowoSwift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności
Bardziej szczegółowoPodstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 2
z wykorzystaniem języka Java ME ćwiczenia 2 Wykorzystanie plików graficznych w MIDlet ach utworzenie obiektu klasy Image (statyczna metoda createimage()) utworzenie obiektu klasy ImageItem dodanie utworzonego
Bardziej szczegółowo1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1
1 LINQ 1 1. Cel zajęć Celem zajęć jest zapoznanie się z technologią LINQ oraz tworzeniem trójwarstwowej aplikacji internetowej. 2. Zadanie Proszę przygotować aplikację WWW, która: będzie pozwalała na generowanie
Bardziej szczegółowoMicrosoft IT Academy kurs programowania
Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego
Bardziej szczegółowoWykład 4. Klasa List Kolejki Stosy Słowniki
Wykład 4 Klasa List Kolejki Stosy Słowniki Klasa List Poważną niedogodnością tablic jako kolekcji danych jest fakt, że muszą one mieć stały rozmiar. Programista musi wiedzieć z góry ile miejsca powinien
Bardziej szczegółowoPHP: bloki kodu, tablice, obiekty i formularze
1 PHP: bloki kodu, tablice, obiekty i formularze SYSTEMY SIECIOWE Michał Simiński 2 Bloki kodu Blok if-else Switch Pętle Funkcje Blok if-else 3 W PHP blok if i blok if-else wyglądają tak samo i funkcjonują
Bardziej szczegółowoLaboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz
Aplikacja internetowa zbudowana w oparciu o środowisko Visual Web Java Server Faces. Zarządzanie obiektami typu SesionBeans, RequestBeen i ApplicationBeans, Laboratorium 1 Wzorce oprogramowania lab1, Okres
Bardziej szczegółowoLaboratorium 7 Blog: dodawanie i edycja wpisów
Laboratorium 7 Blog: dodawanie i edycja wpisów Dodawanie nowych wpisów Tworzenie formularza Za obsługę formularzy odpowiada klasa Zend_Form. Dla każdego formularza w projekcie tworzymy klasę dziedziczącą
Bardziej szczegółowoSwing ćwiczenia 2 opis
Swing ćwiczenia 2 opis Zad 1. a) Dołożyliśmy nowy obszar tekstowy JTextArea i w jego właściwości Document ustawiliśmy, że ma wspólny dokument (model-treść) z naszym pierwszym JTextArea. Zauważmy, że wpisując
Bardziej szczegółowoHttpRequest Aplikacja Czat
HttpRequest Aplikacja Czat Za pomocą obiektu HttpRequest można wykonywać żądania http z aplikacji windows phone. W pierwszej kolejności należy utworzyć aplikację i dodać do niej dwie kontrolki: Buton i
Bardziej szczegółowoInformatyzacja Przedsiębiorstw
Informatyzacja Przedsiębiorstw Microsoft Dynamics NAV 2016 Development Environment C/AL Izabela Szczęch Informatyzacja Przedsiębiorstw Strona 1 Plan zajęć 1 Informacje ogólne dotyczące środowiska deweloperskiego
Bardziej szczegółowoSystemy wirtualnej rzeczywistości. Komponenty i serwisy
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Systemy wirtualnej rzeczywistości Laboratorium Komponenty i serwisy Wstęp: W trzeciej części przedstawione zostaną podstawowe techniki
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 4 Marcin Młotkowski 15 marca 2018 Plan wykładu 1 2 3 Klasa podstawowa Własne kolekcje Obiekty i wartości Marcin Młotkowski Programowanie obiektowe 141 / 224 Z czego składa
Bardziej szczegółowoKurs programowania 2 - listy
Kurs programowania 2 - listy Listy rozwijane (ComboBox) Listy rozwijane (rozwijalne) można tworzyć przy użyciu klasy ComboBox. W tabeli poniżej właściwości udostępniane przez tę kontrolkę. Najważniejsza
Bardziej szczegółowoBackend Administratora
Backend Administratora mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 W tym celu korzystając z konsoli wydajemy polecenie: symfony generate:app backend Wówczas zostanie stworzona
Bardziej szczegółowoPolitechnika Poznańska Wydział Budowy Maszyn i Zarządzania
1) Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z podstawowymi elementami obiektowymi systemu Windows wykorzystując Visual Studio 2008 takimi jak: przyciski, pola tekstowe, okna pobierania danych
Bardziej szczegółowo