Label and TextBlock Control in WPF
Label Control in WPF
The Label control, in its most simple form, will look very much like
the TextBlock but difference Label
has hold Content property, the TextBlock has hold Text property. The reason for
that is that the Label can host any kind of control directly inside of it Like
Image etc, instead of just text. This content can be a string as well
The TextBlock only
allows you to render a text string, while the Label also allows you to:
§ Specify
a border
§ Render
other controls, e.g. an image
§ Use
template content through the Content Template property
§ Use access keys to give focus to related controls
For Example
<Window x:Class="WpfApplicationControls.LabelControlinWPF"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="LabelControlinWPF" Height="300" Width="300">
<StackPanel Margin="10,25,5,23">
<Label Content="Login Page in
WPF"
Margin="12,12,12,12"
TextElement.FontFamily="Verdana" TextElement.FontSize="18" TextElement.FontStyle="Italic"
/>
<!—For EmailId-->
<Label Target="{Binding ElementName=txEmailId}">
<StackPanel Orientation="Horizontal">
<Image Source="/Image/images.jpg" Width="20" />
<AccessText Text="_EmailId:"
/>
</StackPanel>
</Label>
<TextBox Name="txEmailId" Margin="99,-25,0,0"
/>
<!—For Password-->
<Label Target="{Binding ElementName=txtPassword}">
<StackPanel Orientation="Horizontal">
<Image Source="Image/pas.jpg" Height="20" Width="22" />
<AccessText Text="_Password:"
/>
</StackPanel>
</Label>
<PasswordBox Name="txtPassword" PasswordChar="*" MaxLength="10" Margin="99,-25,0,0"
/>
<Button Content="Login" Margin="150,10,0,0" Width="100" Click="Button_Click_1"></Button>
</StackPanel>
</Window>
Result:
TextBlock Control in WPF
The TextBlock control is one of the most fundamental
controls in WPF, A common
understanding is that a Label is for short, one-line texts (but may include
e.g. an image), while the TextBlock works very well for multiline strings as
well, but can only contain text (strings). Both the Label and the TextBlock
offers their own unique advantages, so what you should use very much depends on
the situation.
For Example
:
<Window x:Class="WpfApplicationControls.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="400" Width="488.158">
<StackPanel Margin="0,0,2,0">
<!--apply common style on
TextBlock-->
<StackPanel.Resources>
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="13"/>
</Style>
</StackPanel.Resources>
<!--TextBlock-->
<TextBlock Text="Hi I am
learning Wpf with TextBlock Control"></TextBlock>
<!--TextBlock with Left
Margin-->
<TextBlock Margin="20" Text="Hi I am
learning Wpf with TextBlock Control"></TextBlock>
<!--TextBlock with
LineBreak-->
<TextBlock Margin="10" Foreground="PaleGreen"> Hi I am learning
Wpf with <LineBreak/>TextBlock Control</TextBlock>
<!--TextBlock with
LineHeight-->
<TextBlock Text="This is a
multiline text."
LineHeight="25" LineStackingStrategy="BlockLineHeight"
/>
<!--TextBlock with
TextTrimming -->
<TextBlock Margin="10" TextTrimming="CharacterEllipsis" Foreground="Green"> Hi I am learning
Wpf with TextBlock Control This is a TextBlock control with text that may not
be rendered completely, which will be indicated </TextBlock>
<!--TextBlock with
TextWrapping-->
<TextBlock Margin="10" TextWrapping="Wrap" Foreground="Blue"> This is a TextBlock
control with automatically wrapped text, using the TextWrapping property.</TextBlock>
<!--TextBlock with Bold,
Italic and Underline Property-->
<TextBlock Margin="10" > TextBlock with <Bold>bold</Bold>, <Italic>italic</Italic> and <Underline>underlined</Underline> text.</TextBlock>
<!--TextBlock with
HyperLink Property-->
<TextBlock>This is my blog
link <Hyperlink RequestNavigate="Hyperlink_RequestNavigate_1" NavigateUri="http://kushonline.blogspot.in/">link</Hyperlink> in it.</TextBlock>
<!--TextBlock with HyperLink
Property with MainWindow.xaml.cs-->
private void
Hyperlink_RequestNavigate_1(object sender, RequestNavigateEventArgs e)
{
System.Diagnostics.Process.Start(e.Uri.AbsoluteUri);
}
<!--TextBlock with span
Property-->
<TextBlock Margin="10" >
This
<Span FontWeight="Bold">is</Span>
a
<Span Background="Silver" Foreground="Maroon">My Blog Link</Span>
on
<Span TextDecorations="Underline"><Bold>Facebook</Bold></Span>
<Span FontStyle="Italic">url</Span>
is
<Span Foreground="Blue"><Italic>www.facebook.com/DotNetProgram</Italic></Span>.
</TextBlock>
</StackPanel>
</Window>
Result:
Formatting text from C#/Code-Behind
As you can see, formatting text through XAML
is very easy, but in some cases, you might prefer or even need to do it from
your C#/Code-Behind file
using System;
using
System.Collections.Generic;
using System.Linq;
using System.Text;
using
System.Threading.Tasks;
using System.Windows;
using
System.Windows.Controls;
using
System.Windows.Data;
using
System.Windows.Documents;
using
System.Windows.Input;
using
System.Windows.Media;
using
System.Windows.Media.Imaging;
using
System.Windows.Shapes;
namespace
WpfApplicationControls
{
/// <summary>
/// Interaction logic
for TextBlockControl.xaml
/// </summary>
public partial class TextBlockControl : Window
{
public TextBlockControl()
{
InitializeComponent();
LoadTextBlock();
}
private void LoadTextBlock()
{
TextBlock tb1 = new TextBlock();
tb1.TextWrapping = TextWrapping.Wrap;
tb1.Margin = new Thickness(15);
tb1.Inlines.Add("An Example
with ");
tb1.Inlines.Add(new Run("the
TextBlock control ")
{ FontWeight = FontWeights.DemiBold});
tb1.Inlines.Add("using ");
tb1.Inlines.Add(new Run("inline
")
{ FontStyle = FontStyles.Normal
});
tb1.Inlines.Add(new Run("text
formatting ")
{ Foreground = Brushes.Red
});
tb1.Inlines.Add("from ");
tb1.Inlines.Add(new Run("Code-Behind") { TextDecorations
= TextDecorations.Underline
});
tb1.Inlines.Add(".");
this.Content = tb1;
}
}
}
Result:
0 comments:
Post a Comment