+ All Categories
Home > Documents > Data Binding

Data Binding

Date post: 01-Jan-2016
Category:
Upload: myra-buchanan
View: 49 times
Download: 1 times
Share this document with a friend
Description:
Data Binding. Introduction Model “Hello world” with Binding Using the DataContext INotifyPropertyChanged Interface UpdateSourceTrigger property ObservableCollection . Introduction. במאקרו – תהליך שבו מייצרים קשר (כורכים) בין מידע הקיים ב- BL לממשק המשתמש. - PowerPoint PPT Presentation
20
Data Binding 1. Introduction 2. Model 3. “Hello world” with Binding 4. Using the DataContext 5. INotifyPropertyChanged Interface 6. UpdateSourceTrigger property 7. ObservableCollection<T>
Transcript
Page 1: Data Binding

Data Binding1. Introduction

2. Model

3. “Hello world” with Binding

4. Using the DataContext

5. INotifyPropertyChanged Interface

6. UpdateSourceTrigger property

7. ObservableCollection<T>

Page 2: Data Binding

Introduction.1 - ) ב – ) הקיים מידע בין כורכים קשר מייצרים שבו תהליך .BLבמאקרו המשתמש לממשק

.2) ( ) פקדים - ) ויזואליים לרכיבים שדות מידע פירטי בין מקשרים שבה טכניקה במיקרו

.3 : רכיבים' – שני בין גשר כלס - Binding Sourceבת .Binding Targetו

" ))WPFב-4. נתונים – " - Data Bindingכריכת ה שבין בקשר מרכזית טכניקה BLהיא.UIל-

.5 - " ב" לשקף שתפקידם אירועים גם מגדירה נתונים במידע UIכריכת השינויים את - ב שבוצעו שינויים - UIולהעביר ה - BLלשכבת .DALוה

- WPFב- 6. ב שהורגלנו למה הורחבה מאוד אפשרית Windows Formsהטכניקה והיא. שונים מידע ולמקורות מאפיינים של רחב למגוון

.7- מ - Windows Formsבמעבר כי , WPFל ולהפחיד לבלבל קצת עלולה נתונים כריכת. לחלוטין שונה בשיטה הממומשים דומים ברעיונות מדובר

Page 3: Data Binding

Model. רבים מידע ומקורות שונים מאפיינים מעורבים להיות יכולים נתונים בכריכת

. המידע למקור קשר וללא למאפיין קשר ללא אחיד מודל מציגה נתונים כריכת

: מרכיבים ארבעה יהיו תמיד הזה במודל

: מרכיבים ארבעה יהיו תמיד הזה במודל

מטרה )1. (binding target objectאובייקט

מטרה )2. (target propertyמאפיין

(binding sourceמקור )3.

ערך/ )4. (.Valueתוכן

UI Object

Property

UI Dependency Object

DependencyProperty

Binding Target

Binding Source

Binding Object

Page 4: Data Binding

Modelלדוגמה:

בין לכרוך נרצה שם TextBoxאם שנקראת תכונה של תוכן :Person.Nameלבין.1 - ה הוא המטרה .TextBoxאובייקט

הוא 2. המטרה .TextBox.Textמאפיין

המחלקה 3. הוא .Personהמקור

.4 - ב הקיים הערך הוא .Nameוהתוכן

UI Object

Property

UI Dependency Object

DependencyProperty

Binding Target

Binding Source

Binding Object

Page 5: Data Binding

“Hello world” with Binding

במחלקה – } { 1. ושימוש המסולסלים בסוגריים מתחיל הנתונים כריכת תהליךBinding.

המחלקה 2. . Bindingבאמצעות הנתונים לכריכת הדרושים הפרמטרים את נגדיר

מטרה )3. באובייקט מוגדרת המקור( binding target objectהמחלקה את ומגדירה(binding source )באמצעותElementName( המטרה מאפיין targetואת

property )באמצעותPath.

מטרה )4. במאפיין מוצבים (target propertyהסוגריים

<StackPanel Margin="10" > <StackPanel Orientation="Horizontal" > <TextBlock Text="Source: " FontSize="20"></TextBlock> <TextBox Name="txtValue" FontSize="20" Width="300"/> </StackPanel> <StackPanel Orientation="Horizontal"> <TextBlock Text="Target: " FontSize="20"></TextBlock> <TextBlock Text="{Binding ElementName=txtValue, Path=Text}" FontSize="20" /> </StackPanel></StackPanel>

: קוד דוגמתHelloWorldDataBinding

Page 6: Data Binding

Using the DataContext- DataContextהמאפיין 1. ב וחשוב מרכזי מאפיין .Data Bindingהוא

.2DataContext - ה את המכיל המאפיין - Data Sourceהוא ה מחלקת עבורBinding.

.3 - ב התועלת ?Data Sourceללא Bindingומה

.4 - ה שאת .DataContextמקובל החלון ברמת מאתחלים

הבסיס 5. במחלקת מוגדר נגזרים , FrameworkElementהמאפיין שממנה מחלקה. הפקדים רוב

להגדרת DataContextהגדרת 6. ביותר הנפוצה השיטה .Data Bindingהיא

.

Page 7: Data Binding

Using the DataContext: קוד דוגמת

Code Behind public partial class MainWindow : Window{ public MainWindow() { InitializeComponent(); Person person = new Person { FirstName = "Elimelch", LastName = "Zorkin", Age = 88 }; this.DataContext = person; }}

class Person{ public string LastName { get; set; } public string FirstName { get; set; } public int Age { get; set; }}

המקור הגדרת(binding source)

/ ערך התוכן הגדרת(Value)

המקור הגדרתDataBindingל-

: קוד DataContextSampleדוגמת

Page 8: Data Binding

Using the DataContext

XAML

כמו ) עריכה בשדה - TextBoxבשימוש , Bindingה( - אולם כיווני דו הוא:)... בה ) וקוץ עליה הפוקוס את איבד שהפקד לאחר רק מתבצע העדכון

<StackPanel> <TextBlock Text="{Binding LastName}"></TextBlock> <TextBlock Text="{Binding FirstName}"></TextBlock> <TextBlock Text="{Binding Age}"></TextBlock></StackPanel> המטרה אובייקט הגדרת

(binding target object)מטרה מאפיין הגדרת

(target property)

: קוד דוגמתDataContextTwoDirectionSample

<StackPanel> <TextBox Text="{Binding LastName}"></TextBox> <TextBox Text="{Binding FirstName}"></TextBox> <TextBox Text="{Binding Age}"></TextBox> <Button Name="btn" Content="Click Me" Click="btn_Click"></Button></StackPanel>

Page 9: Data Binding

INotifyPropertyChanged Interface, INotifyPropertyChangedהממשק 1. ותורם שימושי חשוב ממשק הוא

של .Data Bindingלפונקציונאליות

.2 : השמות במרחב using System.ComponentModelמוגדר

.3- ל הקשור בפקד שינוי שמתרחש אימת כל יופעל אשר אירוע Data Bindingמגדיר(Data Bound Control).

: קוד INotifyPropertyChangedSampleדוגמת

class Person : INotifyPropertyChanged{ private string m_LastName; private string m_FirstName; private int m_Age; . . .}

הבא בעמוד המשך

Page 10: Data Binding

INotifyPropertyChanged Interfaceclass Person : INotifyPropertyChanged{ . . . public event PropertyChangedEventHandler PropertyChanged;

private void OnPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } . . .}

הבא בעמוד המשך

מימוש הממשק

אירוע הפעלת

Page 11: Data Binding

INotifyPropertyChanged Interfaceclass Person : INotifyPropertyChangedהמשך:

{ private string m_LastName; private string m_FirstName; private int m_Age; public string LastName { get { return m_LastName; } set { if (m_LastName != value) { m_LastName = value; OnPropertyChanged("LastName"); } } } . . .}

הבא בעמוד המשך

שינויים על דיווחבמידע

Page 12: Data Binding

INotifyPropertyChanged Interfacepublic partial class MainWindow : Windowהמשך:

{ private Person mPerson; public MainWindow() { mPerson = new Person (); mPerson.PropertyChanged += _person_PropertyChanged; this.DataContext = mPerson; }

void _person_PropertyChanged(object sender, PropertyChangedEventArgs e) { // Save to Database txtFullName.Text = mPerson.LastName + " " + mPerson.FirstName + " is " + mPerson.Age + " years old"; } . . .}

טיפול באירוע

הרשמה לאירוע

: קוד INotifyPropertyChangedSampleדוגמת

Page 13: Data Binding

INotifyPropertyChanged Interfaceבפקד – שינוי ראשון :TextBoxשלב

Page 14: Data Binding

INotifyPropertyChanged Interface: פוקוס – איבד שהפקד אחרי מיד שני שלב

: - עדכונים שלישי שלב

Page 15: Data Binding

INotifyPropertyChanged Interface: הפקדים שלושת עדכון אחרי התהליך סיום עם

Page 16: Data Binding

UpdateSourceTrigger property.1- ל המקושר במידע שינויים לעדכן כיצד למדנו הקודמות .DataContextבדוגמאות

בפקדי – ) 2. רק הפוקוס את מאבד שהפקד לאחר רק מתבצע העדכון (.Textהבעיה

.UpdateSourceTrigger.Bindingהפתרון – 3.

:UpdateSourceTrigger.Bindingל- 4. אפשריים ערכים שלושה

.1Explicit - ב– בצורה DataContextהערכים כן לעשות מהם שנבקש עד יתעדכנו לאטראנזקציה, בהם למקרים או נתונים הרבה מקלידים בהם למקרים מתאים מפורשת

. שלמה להיות חייבת

.2LostFocus – - , ה המחדל .DataContextברירת הפקד של פוקוס באיבוד מתעדכן

.3PropertyChanged – . הערכים שינוי עם מיידית

Page 17: Data Binding

UpdateSourceTrigger property<StackPanel> <TextBox Text="{Binding LastName, UpdateSourceTrigger=PropertyChanged}" TextChanged="TextBox_TextChanged"></TextBox> <TextBox Text="{Binding FirstName, UpdateSourceTrigger=PropertyChanged}" TextChanged="TextBox_TextChanged"></TextBox> <TextBox Text="{Binding Age, UpdateSourceTrigger=PropertyChanged}" TextChanged="TextBox_TextChanged"></TextBox> <Button Name="btn" Content="Click Me" Click="btn_Click"></Button></StackPanel>

הרשמה לאירוע

: קוד UpdateSourceTriggerSampleדוגמת

Page 18: Data Binding

ObservableCollection<T>מגדירים 1. ?Data Bindingאיך נתונים לאוסף

הגנרית 2. האוסף במחלקת המוגדרת< ObservableCollection<Tמשתמשים : השמות .System.Collections.ObjectModelבמרחב

.3ObservableCollection<T >הממשק את .INotifyCollectionChangedמממש

.4 - ב מעוניינים שלא - Data Bindingהיכן ב להשתמש שיקולי Listעדיף בשלביצועים.

Page 19: Data Binding

ObservableCollection<T>

: קוד דוגמתpublic partial class MainWindow : Window { private ObservableCollection<User> users_list = new ObservableCollection<User>(); public MainWindow() { InitializeComponent(); users_list.CollectionChanged += users_list_CollectionChanged; users_list.Add(new User() { Name = "Elimelech", Password="123456" }); users_list.Add(new User() { Name = "Shoshana", Password = "123456" }); this.DataContext = this; } void users_list_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { this.Title = users_list.Count().ToString(); } public ObservableCollection<User> Users { get { return users_list; } set { users_list = value; } } . . .}

: קוד ObservableCollectionSampleדוגמת

Page 20: Data Binding

: , , ב להוריד ניתן מצגות חומרים הסילבוס את

. . .www corner co il


Recommended