וובמאסטר - תיכנות ובניית אתרים

מדריך Silverlight – פקדים מסוג ContentControl

arikp ,‏ מכללת סלע‏ ‏/‏ 21 יולי, 2011
F+
F-

בפרקים דומים במדריך כבר ראינו שלהרבה פקדים יש תכונה בשם Content. בתכונה זו לרוב שמנו ערך טקסטואלי, אבל הזכרתי כבר את העובדה שניתן לשים ערכים הרבה יותר מורכבים. בפרק זה נלמד מה בדיוק ניתן לשים בתכונה Content.

הפקדים Button, CheckBox, ListBoxItem ועוד הרבה מאוד פקדים נוספים יורשים מהמחלקה ContentControl. התכונה החשובה ביותר הנורשת ממחלקה זו היא אותה תכונת Content. תכונה זו מייצגת את התוכן של אותו הפקד.

בתכונה Content ניתן לשים כל תוכן שנרצה. אם נשים טקסט פשוט, אזי הפקד שלנו יציג את הטקסט, כפי שראינו בדוגמאות עד כה. לעומת זאת אם נשים בתוך התכונה Content פקדים אחרים, אזי התוכן שלנו יהיה אותם פקדים. באופן זה ניתן ליצור אפליקציות מאוד מורכבות.

דוגמא שימושית מאוד שנוכל למצוא לכך היא שימוש בContent בשביל ליצור כפתור שיש בו גם טקסט וגם תמונה. בשביל לעשות זאת אנחנו נגדיר כפתור שהתוכן שלו אינו מחרוזת אלא פקד StackPanel. הסיבה שנרצה פקד StackPanel היא כדי להכניס מספר פקדים נוספים בתוכו. בתוך הפקד StackPanel (שבתוך הכפתור) אנו נכניס פקד TextBlock בשביל להציג טקסט ופקד Image בשביל להציג תמונה (ילמד בהרחבה בהמשך).

להלן דוגמת קוד שעושה זאת:

<UserControl x:Class="FirstSilverlightApplication3.MainPage"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
            mc:Ignorable="d"
            d:DesignHeight="300"
            d:DesignWidth="400">
  <StackPanel>
    <Button>
      <Button.Content>
        <StackPanel Orientation="Horizontal">
          <Image Source="/FirstSilverlightApplication3;component/Images/Koala.jpg"
                Width="100" />
          <TextBlock Text="this is my button text"
                    VerticalAlignment="Center"
                    Margin="10" />
        </StackPanel>
      </Button.Content>
    </Button>
  </StackPanel
>
</
UserControl
>

והתוצאה

מדריך Silverlight – פקדים מסוג ContentControl

נעיר כי יכולנו לכתוב את הקוד בצורה קצת קצרה יותר, באופן הבא:

<UserControl x:Class="FirstSilverlightApplication3.MainPage"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
            mc:Ignorable="d"
            d:DesignHeight="300"
            d:DesignWidth="400">
  <StackPanel>
    <Button>
      <StackPanel Orientation="Horizontal">
        <Image Source="/FirstSilverlightApplication3;component/Images/Koala.jpg"
              Width="100" />
        <TextBlock Text="this is my button text"
                  VerticalAlignment="Center"
                  Margin="10" />
      </StackPanel>
    </Button>
  </StackPanel
>
</
UserControl
>

השוני הוא שבדוגמא זו לא ציינו לאיזה תכונה הStackPanel יכנס. הסיבה שזה עובד היא שלכל אלמנט יש תכונת ברירת מחדל שאליה ערכים נכנסים במידה ולא צוינה התכונה באופן מפורש. תכונת ברירת מחדל של כפתור (ושל הרבה פקדים נוספים שיורשים מ ContentControl) היא התכונה Content.

נעיר כי אם שמים בתכונה Content איזשהו ערך שהוא אינו פקד הניתן לתצוגה אזי תקרא פונקציית ToString שלו והערך החוזר יוצג כטקסט.

arikp, מכללת סלע

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

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

תגובות למאמר



עוד במדריך

תגיות פופולאריות

X
הצטרף לעמוד שלנו בפייסבוק להישאר מעודכן!
וובמאסטר © כל הזכויות שמורות