TOC

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

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

הפקד TextBlock

TextBlock הוא לא פקד בעצם, מאחר שהוא לא יורש ממחלקת Control, בכל זאת משתמשים בו כמו כל פקד אחר ב- WPF, ולכן נקרא לו פקד.

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

השתמשנו כבר בפקד TextBlock במאמר "שלום, WPF!", אבל כעת, ניתן מבט על הצורה הפשוטה ביותר שלו:

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

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

בדוגמה הבאה, נשים יותר טקסט בפקד TextBlock ונראה איך הוא מסתדר. הוספתי גם מעט שוליים, לעשות את המראה יפה יותר:

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextBlockSample" Height="100" Width="200">
    <Grid>
		<TextBlock Margin="10">This is a TextBlock control and it comes with a very long text</TextBlock>
    </Grid>
</Window>

התמודדות עם מחרוזות ארוכות

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

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

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextBlockSample" Height="200" Width="250">
    <StackPanel>
		<TextBlock Margin="10" Foreground="Red">
			This is a TextBlock control<LineBreak />
			with multiple lines of text.
		</TextBlock>
		<TextBlock Margin="10" TextTrimming="CharacterEllipsis" Foreground="Green">
			This is a TextBlock control with text that may not be rendered completely, which will be indicated with an ellipsis.
		</TextBlock>
		<TextBlock Margin="10" TextWrapping="Wrap" Foreground="Blue">
			This is a TextBlock control with automatically wrapped text, using the TextWrapping property.
		</TextBlock>
	</StackPanel>
</Window>

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

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

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

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

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


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!