TOC

This article is currently in the process of being translated into Hebrew (~97% done).

פקדים בסיסיים:

The Label control

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

<Window x:Class="WpfTutorialSamples.Basic_controls.LabelControlSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="LabelControlSample" Height="100" Width="200">
    <Grid>
		<Label Content="This is a Label control." />
	</Grid>
</Window>

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

במצב הפשוט כאשר יש מחרוזת, מאחורי הקלעים נוצר פקד מסוג "בלוק טקסט" (TextBlock) שם תוצג המחרוזת.

פקד "תווית" לעומת פקד "בלוק טקסט"

מדוע אם כך להשתמש בפקד "תווית" ? ובכן יש מספר הבדלים חשובים בין פקד "תווית" לפקד "בלוק טקסט". "בלוק טקסט" מאפשר רק לעבוד עם מחרוזת לעומת פקד "תווית" המאפשר :

  • הגדרת מסגרת
  • קבלת פקדים מסוג אחר לדוגמה פקד "תמונה"
  • להשתמש ב "תבנית" (Template) דרך התכונה ששמה : ContentTemplate
  • מאפשר להשתמש ב"מפתחות גישה" (Access Key) לתת פוקוס לפקד מקושר

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

הפקד "תווית" ומפתות שלו

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

<Window x:Class="WpfTutorialSamples.Basic_controls.LabelControlSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="LabelControlSample" Height="180" Width="250">
	<StackPanel Margin="10">
		<Label Content="_Name:" Target="{Binding ElementName=txtName}" />
		<TextBox Name="txtName" />
		<Label Content="_Mail:" Target="{Binding ElementName=txtMail}" />
		<TextBox Name="txtMail" />
	</StackPanel>
</Window>

תמונת המסך מראה דוגמה לחלון שיחה כאשר הלחצן ALT לחוץ תנסה להריץ את הדוגמה עם לציצה על לחצן ALT ואז ללחוץ על אותיות N ו M וניתן יהיה לראות שהפוקוס זז בין שני הפקדים האחרים

יש כאן מספר תפיסות. לראשונה , מגדירים מפתחות עי התו קו תחתון (_) לפני האות. זה לא חייב להיות האות הראשונה, זה יכול להיות כל אחד מהאותיות בתכולה. מה שנהוג זה להשתמש בתו הראשון שאינו בשימוש כמפתח במקום אחר.

ניתן להשתמש במשתנה Target על מנת לחבר את התכולה של פקד "תווית" והפקד המיועד . משתמשים ב חיבור רגיל של WPF לשם כך ע"י ששימוש במשתנה ElementName שעל כולם ידובר בהמשך המסמך. החיבור מבוסס על שם הפקד כך שאם משנים את השם צריך יהיה לשנות גם את השם של החיבור.

השימוש בפקד כתכולה לפקד "תווית"

כפי שדובר לעיל פקד "תווית" מאפשר להכיל פקד נוסף ועדין לשמור על היתרונות של פקד "תווית". ננסה דוגמה שיש בא תמונה וטקסט בתוך פקד "תווית" ועדין לאפשר מפתח לכל אחד מהתוויות.

<Window x:Class="WpfTutorialSamples.Basic_controls.LabelControlAdvancedSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="LabelControlAdvancedSample" Height="180" Width="250">
	<StackPanel Margin="10">
		<Label Target="{Binding ElementName=txtName}">
			<StackPanel Orientation="Horizontal">
				<Image Source="http://cdn1.iconfinder.com/data/icons/fatcow/16/bullet_green.png" />
				<AccessText Text="_Name:" />
			</StackPanel>
		</Label>
		<TextBox Name="txtName" />
		<Label Target="{Binding ElementName=txtMail}">
			<StackPanel Orientation="Horizontal">
				<Image Source="http://cdn1.iconfinder.com/data/icons/fatcow/16/bullet_blue.png" />
				<AccessText Text="_Mail:" />
			</StackPanel>
		</Label>
		<TextBox Name="txtMail" />
	</StackPanel>
</Window>

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

פקד ה"תמונה" שמתואר בהמשך הוא רק לשם ההצגה ואינו רעיון טוב לשימוש באפליקציות אמיתיות

סיכום

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


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!