מדריך Windows Phone

מדריך Windows Phone – שימוש ב Data Binding

‏ • Sela

מה זה Data Binding?

Data Binding היא טכניקה שמאפשרת לסנכרן בין שתי תכונות של אובייקטים שונים.
לרוב משתמשים בטכניקה זו בשביל לסנכרן בין אובייקט המכיל מידע (Data) לאובייקט המציג את המידע למסך (UI). לדוגמא התכונה Name של אובייקט מסוג Person יכולה להיות מסונכרנת לתכונה Text של אובייקט TextBox. הסנכרון יכול להיות דו-כיווני הוא חד-כיווני. לפעמים נעשה גם סנכרון בין שני פקדים כמו בדוגמא הבאה.

בדוגמא הבאה ניתן לראות שימוש פשוט ב Data Binding. בדוגמא זו יש לנו פקד CheckBox וכפתור ונרצה שהכפתור יהיה פעיל רק אם הCheckBox מסומן. כלומר נרצה שהתכונה IsChecked של הCheckBox תהיה מסונכרנת לתכונה IsEnabled של הכפתור. הקטעים החשובים לצורך ה Data Binding מודגשים:

<phone:PhoneApplicationPage
  x:Class="PhoneDemo.MainPage"
  >="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  >:x="http://schemas.microsoft.com/winfx/2006/xaml"
  >:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
  >:d="http://schemas.microsoft.com/expression/blend/2008"
  >:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  mc:Ignorable="d"
  d:DesignWidth="480"
  d:DesignHeight="800"
  FontFamily="{StaticResource PhoneFontFamilyNormal}"
  FontSize="{StaticResource PhoneFontSizeNormal}"
  Foreground="{StaticResource PhoneForegroundBrush}"
  Orientation="Portrait"
  SupportedOrientations="Portrait">

  <StackPanel>
    <TextBlock
     Text="Disclaimer: abcdefghijklmnopqrstuvwxyz" />
    <CheckBox
     x:Name="checkBoxAgree"
     Content="I Agree"
     IsChecked="False" />
    <StackPanel
     Orientation="Horizontal">
      <Button
       Content="Prev" />
      <Button
       Content="Next"
       IsEnabled="{Binding ElementName=checkBoxAgree, Path=IsChecked}" />
    </StackPanel>
  </StackPanel
>
</
phone:PhoneApplicationPage
>

ע"י הרצה של תוכנית זו ניתן לראות שסימון ה CheckBox משנה את הכפתור לפעיל ולהפך.

מדריך Windows Phone – שימוש ב Data Binding

כמובן שיכולנו לעשות את הדוגמא הזאת גם ללא שימוש ב Data Binding, אלא ע"י טיפול באירוע Click של ה CheckBox וכתיבת קוד ב #C. היתרון ב Data Binding הוא שנחסך מאתנו לכתוב הרבה קוד שאחראי על סנכרון שכזה.

עקרונות Data Binding

Binding הוא הדבק שמחבר בין אובייקט מקור ואובייקט יעד. ולכן, בתהליך Binding יש ארבעה דברים שחייבים להגדיר:

  1. אובייקט היעד – זהו האובייקט שנרצה לשנות תכונה שלו. אובייקט זה חייב לרשת ישירות או בעקיפין מ DependencyObject. כל הפקדים בSilverlight הם כאלו. בדוגמא הקודמת האובייקט יעד היה ה Button.
  2. תכונת היעד – זוהי התכונה שנרצה לשנות. תכונה זו חייבת להיות Dependency Property. למזלנו, בSilverlight רוב התכונות הן כאלו, לכן לרוב זוהי אינה מגבלה. בדוגמא הקודמת, תכונת היעד הייתה IsEnabled.
  3. אובייקט המקור – זהו האובייקט שאליו היעד מתחבר. אין מגבלות על סוג האובייקט. בדוגמא הקודמת האובייקט מקור היה ה CheckBox.
  4. תכונת המקור – זוהי התכונה שממנה נרצה לקחת את הערך ולהציבו בתכונת היעד. תכונה זו יכולה להיות גם תכונה רגילה (כלומר לא Dependency Property). בדוגמא הקודמת תכונת המקור הייתה IsChecked. נעיר כי ניתן בתכונת המקור לרשום ביטויים מורכבים המכילים גם תתי תכונות (תכונה של תכונה).

מדריך Windows Phone – שימוש ב Data Binding

בנוסף להגדרות הללו, ניתן להגדיר אפשרויות נוספות שישפיעו על תהליך ה Binding, לדוגמא כיוון זרימת המידע המידע.

מה נלמד בפרקים הבאים:

  1. שליטה בכיוון זרימת המידע
  2. שליטה במועד ביצוע הסנכרון
  3. הגדרת מקורות
  4. שימוש ב IValueConverter
  5. שימוש ב INotifyPropertyChanged
  6. חיבור ל Collection

תגיות: , , , ,

arikp

אריק פוזננסקי הוא יועץ בכיר ומרצה בסלע. הוא השלים שני תארי B.Sc. במתמטיקה ומדעי המחשב בהצטיינות יתרה בטכניון. לאריק ידע נרחב בטכנולוגיות מיקרוסופט, כולל .NET עם C#, WPF, Silverlight, WinForms, Interop, COM/ATL, C++ Win32 ו reverse engineering.

תגובות בפייסבוק