c# free pdf viewer : Add pdf pages to word document control Library platform web page asp.net wpf web browser Pro_Silverlight_5_in_CSharp_4th_edition17-part79

CHAPTER 5  ELEMENTS 
159 
Figure 5-6. The hierarchy of content controls 
As Figure 5-6 shows, several common controls are actually content controls, including the Label, 
Tooltip, Button, RadioButton, and CheckBox. There are also a few more specialized content controls, 
such as ScrollViewer (which you used in Chapter 3 to create a scrollable panel), and some controls that 
are designed for being used with another, specific control. For example, the ListBox control holds 
ListBoxItem content controls; the Calendar requires the DayButton and MonthButton; and the DataGrid 
uses the DataGridCell, DataGridRowHeader, and DataColumnHeader. 
www.it-ebooks.info
Add pdf pages to word document - insert pages into PDF file in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Guide C# Users to Insert (Empty) PDF Page or Pages from a Supported File Format
adding pages to a pdf document in preview; add pages to pdf document
Add pdf pages to word document - VB.NET PDF Page Insert Library: insert pages into PDF file in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use VB.NET APIs to Add a New Blank Page to PDF Document
add page numbers pdf files; add page pdf reader
CHAPTER 5  ELEMENTS 
160 
The Content Property 
Whereas the Panel class adds the Children collection to hold nested elements, the ContentControl class 
adds a Content property, which accepts a single object. The Content property supports any type of 
object. It gives you three ways to show content: 
Elements: If you use an object that derives from UIElement for the content of a 
content control, that element will be rendered. 
Other objects: If you place a nonelement object into a content control, the control 
will simply call ToString() to get the text representation for that control. For some 
types of objects, ToString() produces a reasonable text representation. For others, 
it simply returns the fully qualified class name of the object, which is the default 
implementation. 
Other objects, with a data template: If you place a nonelement object into a 
content control and you set the ContentTemplate property with a data template, 
the content control will render the data template and use the expressions it 
contains to pull information out of the properties of your object. This approach is 
particularly useful when dealing with collections of data objects, and you’ll see 
how it works in Chapter 20. 
To understand how this works, consider the humble button. An ordinary button may just use a 
simple string object to generate its content: 
<Button Margin="3" Content="Text content"></Button
This string is set as the button content and displayed on the button surface. 
 Tip  When filling a button with unformatted text, you may want to use the font-related properties that the Button 
class inherits from Control, which duplicate the TextBlock properties listed in Table 5-2. 
However, you can get more ambitious by placing other elements inside the button. For example, 
you can place an image inside using the Image class: 
<Button Margin="3"> 
<Image Source="happyface.jpg"></Image
</Button
Or you could combine text and images by wrapping them all in a layout container like the 
StackPanel, as you saw in Chapter 3: 
<Button Margin="3"> 
<StackPanel
<TextBlock Margin="3" Text="Image and text button"></TextBlock
<Image Source="happyface.jpg" /> 
<TextBlock Margin="3" Text="Courtesy of the StackPanel"></TextBlock
</StackPanel
</Button
www.it-ebooks.info
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
to open & read documents even though they are using different types of word processors. C#.NET Project DLLs: Copy and Paste PDF Pages. Add necessary references:
add page numbers pdf file; add page numbers to pdf preview
VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.
pageIndexes.Add(3) ' The 4th page. ' Create the new document with 3 pages. Dim outputFilePath As String = Program.RootPath + "\\" Output.pdf" newDoc.Save
add blank page to pdf; add page to pdf in preview
CHAPTER 5  ELEMENTS 
161 
If you want to create a truly exotic button, you could even place other content controls such as text 
boxes and buttons inside (and nest still elements inside these). It’s doubtful that such an interface would 
make much sense, but it is possible. 
At this point, you might be wondering if the Silverlight content model is really worth all the trouble. 
After all, you might choose to place an image inside a button, but you’re unlikely to embed other 
controls and entire layout panels. However, there are a few important advantages to the content model. 
For example, the previous markup placed a bitmap into a button. However, this approach isn’t as 
flexible as creating a vector drawing out of Silverlight shapes. Using a vector drawing, you can create a 
button image that’s scalable and can be changed programmatically (for example, with different colors, a 
transform, or an animation). Using a vector-based button opens you up to the possibility of creating a 
dynamic interface that responds to state changes and user actions. 
In Chapter 8, you’ll consider how you can begin building vector images in Silverlight. However, the 
key fact you should understand now is that the vector-drawing model integrates seamlessly with content 
controls because they have the ability to hold any element. For example, this markup creates a simple 
graphical button that contains two diamond shapes (as shown in Figure 5-7): 
<Button Margin="3" Height="70" Width="215"> 
<Grid Margin="5"> 
<Polygon Points="100,25 125,0 200,25 125,50" 
Fill="LightSteelBlue" /> 
<Polygon Points="100,25 75,0 0,25 75,50" 
Fill="LightGray"/> 
</Grid> 
</Button> 
Figure 5-7. A button with shape content 
Clearly, in this case, the nested content model is simpler than adding extra properties to the Button 
class to support the different types of content. Not only is the nested content model more flexible, it also 
www.it-ebooks.info
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
Add necessary references: RasterEdge.Imaging.Basic.dll. This is a VB .NET example for how to delete a range of pages from a PDF document.
adding page to pdf; add page number to pdf in preview
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
options, including setting a single page, a series of pages, and random pages to be C#.NET Project DLLs for Deleting PDF Document Page. Add necessary references
add pages to pdf acrobat; add and remove pages from pdf file online
CHAPTER 5  ELEMENTS 
162 
allows the Button class to expose a simpler interface. And because all content controls support content 
nesting in the same way, there’s no need to add different content properties to multiple classes. 
In essence, the nested content model is a trade. It simplifies the class model for elements because 
there’s no need to use additional layers of inheritance to add properties for different types of content. 
However, you need to use a slightly more complex object model—elements that can be built out of other 
nested elements. 
 Noteontrol. For example, even though 
you can place any content in a button, a few details never change, such as the button’s shaded background, its 
rounded border, and the mouse-over effect that makes it glow when you move the mouse pointer over it. However, 
there’s another way to change these built-in details—by applying a new control template. Chapter 15 shows how 
you can change all aspects of a control’s look and feel using a control template. 
Aligning Content 
In Chapter 3, you learned how to align different controls in a container using the HorizontalAlignment 
and VerticalAlignment properties, which are defined in the base FrameworkElement class. However, 
once a control contains content, there’s another level of organization to think about. You need to decide 
how the content inside your content control is aligned with its borders. This is accomplished using the 
HorizontalContentAlignment and VerticalContentAlignment properties. 
HorizontalContentAlignment and VerticalContentAlignment support the same values as 
HorizontalAlignment and VerticalAlignment. That means you can line content up on the inside of any 
edge (Top, Bottom, Left, or Right), you can center it (Center), or you can stretch it to fill the available 
space (Stretch). These settings are applied directly to the nested content element, but you can use 
multiple levels of nesting to create a sophisticated layout. For example, if you nest a StackPanel in a 
Button element, the Button.HorizontalContentAlignment determines where the StackPanel is placed, 
but the alignment and sizing options of the StackPanel and its children will determine the rest of the 
layout. 
In Chapter 3, you also learned about the Margin property, which allows you to add whitespace 
between adjacent elements. Content controls use a complementary property named Padding, which 
inserts space between the edges of the control and the edges of the content. To see the difference, 
compare the following two buttons: 
<Button Content="Absolutely No Padding"></Button> 
<Button Padding="3" Content="Well Padded"></Button> 
The button that has no padding (the default) has its text crowded up against the button edge. The 
button that has a padding of 3 pixels on each side gets a more respectable amount of breathing space. 
 Note  The HorizontalContentAlignment, VerticalContentAlignment, and Padding properties are all defined as part 
of the Control class, not the more specific ContentControl class. That’s because there may be controls that aren’t 
www.it-ebooks.info
VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
All PDF pages can be converted to separate Word files within a short time in In order to convert PDF document to Word file using VB.NET Add necessary references
add pages to an existing pdf; add page numbers to pdf reader
C# PDF insert image Library: insert images into PDF in C#.net, ASP
Create high resolution PDF file without image quality losing in ASP.NET application. Add multiple images to multipage PDF document in .NET WinForms.
add page number pdf file; add a page to a pdf in reader
CHAPTER 5  ELEMENTS 
163 
content controls but still have some sort of content. One example is the TextBox—its contained text (stored in the 
Text property) is adjusted using the alignment and padding settings you’ve applied. 
Buttons 
Silverlight recognizes three types of button controls: the familiar Button, the CheckBox, and the 
RadioButton. All of these controls are content controls that derive from ButtonBase. 
The ButtonBase class includes only a few members. It defines the obviously important Click event 
and adds the IsFocused, IsMouseOver, and IsPressed read-only properties. Finally, the ButtonBase class 
adds a ClickMode property, which determines when a button fires its Click event in response to mouse 
actions. The default value is ClickMode.Release, which means the Click event fires when the mouse is 
clicked and released. However, you can also choose to fire the Click event mouse when the mouse 
button is first pressed (ClickMode.Press) or, oddly enough, whenever the mouse moves over the button 
and pauses there (ClickMode.Hover). 
You’ve already seen how to use the ordinary button. In the following sections, you’ll take a quick 
look at the more specialized alternatives that Silverlight provides. 
The HyperlinkButton 
The ordinary Button control is simple enough—you click it, and it fires a Click event that you handle in 
code. But what about the other variants that Silverlight offers? 
One of these is the HyperlinkButton. The HyperlinkButton doesn’t draw the standard button 
background. Instead, it simply renders the content that you supply. If you use text in the 
HyperlinkButton, it appears blue by default, but it’s not underlined. (Use the TextDecorations property 
if you want that effect.) When the user moves the mouse over a HyperlinkButton, the mouse cursor 
changes to the pointing hand. You can override this effect by setting the Cursor property. 
There are essentially three ways to use the HyperlinkButton: 
• Send the browser to an external website: To do this, set the NavigateUri property 
with an absolute URL that points to the target web page. Optionally, set the 
TargetName property with the name of browser frame where you want to open 
the link. Keep in mind that if you navigate away from the current page, you’ll 
effectively end the current Silverlight application. As a result, this technique is of 
relatively limited use. 
• Send a frame to another Silverlight page: To do this, make sure you have a Frame 
control on your page, and set the NavigateUri with a relative URI that points to 
another XAML file in your project. You’ll learn how to use this ability, and the rest 
of Silverlight’s navigation features, in Chapter 7. 
• Perform some arbitrary action in code: To do this, don’t set the NavigateUri 
property. Instead, simply handle the Click event to carry out the appropriate 
action. 
www.it-ebooks.info
VB.NET PDF insert image library: insert images into PDF in vb.net
VB.NET PDF - Add Image to PDF Page in VB.NET. Guide VB.NET Programmers How to Add Images in PDF Document Using XDoc.PDF SDK for VB.NET.
add or remove pages from pdf; add and delete pages in pdf online
C# PDF Password Library: add, remove, edit PDF file password in C#
in C#.NET framework. Support to add password to PDF document online or in C#.NET WinForms for PDF file protection. Able to create a
add page numbers pdf; adding page numbers to pdf document
CHAPTER 5  ELEMENTS 
164 
 Tip  The HTML entry page ca
enableNavigation property to the
use the HyperlinkButton for internal frame navigation (see Chapter 7) or to trigger an action with the Click event. 
The ToggleButton and RepeatButton 
Alongside Button and HyperlinkButton, two more classes derive from ButtonBase: 
• RepeatButton: This control fires Click events continuously, as long as the button is 
held down. Ordinary buttons fire one Click event per user click. 
• ToggleButton: This control represents a button that has two states (clicked or 
unclicked). When you click a ToggleButton, it stays in its pushed state until you 
click it again to release it. This is sometimes described as sticky click behavior. 
Both RepeatButton and ToggleButton are defined in the System.Windows.Controls.Primitives 
namespace, which indicates they aren’t often used on their own. Instead, they’re used to build more 
complex controls by composition or extended with features through inheritance. For example, the 
RepeatButton is one of the ingredients used to build the higher-level ScrollBar control (which, 
ultimately, is part of the even higher-level ScrollViewer). The RepeatButton gives the arrow buttons at 
the ends of the scroll bar their trademark behavior—scrolling continues as long as you hold it down. 
Similarly, the ToggleButton is used to derive the more useful CheckBox and RadioButton classes 
described next. However, neither the RepeatButton nor the ToggleButton is an abstract class, so you can 
use both of them directly in your user interfaces or to build custom controls if the need arises. 
The CheckBox 
Both the CheckBox and the RadioButton are buttons of a different sort. They derive from ToggleButton, 
which means they can be switched on or off by the user, which is the reason for their toggle behavior. In 
the case of the CheckBox, switching the control on means placing a check mark in it. 
The CheckBox class doesn’t add any members, so the basic CheckBox interface is defined in the 
ToggleButton class. Most important, ToggleButton adds an IsChecked property. IsChecked is a nullable 
Boolean, which means it can be set to true, false, or a null value. Obviously, true represents a checked 
box, while false represents an empty one. The null value is a little trickier—it represents an 
indeterminate state, which is displayed as a shaded box. The indeterminate state is commonly used to 
represent values that haven’t been set or areas where some discrepancy exists. For example, if you have 
a check box that allows you to apply bold formatting in a text application and the current selection 
includes both bold and regular text, you might set the check box to null to show an indeterminate state. 
To assign a null value in Silverlight markup, you need to use the null markup extension, as shown 
here: 
<CheckBox IsChecked="{x:Null}" Content="A check box in indeterminate state"> 
</CheckBox> 
Along with the IsChecked property, the ToggleButton class adds a property named IsThreeState, 
which determines whether the user is able to place the check box into an indeterminate state. If 
IsThreeState is false (the default), clicking the check box alternates its state between checked and 
www.it-ebooks.info
CHAPTER 5  ELEMENTS 
165 
unchecked, and the only way to place it in an indeterminate state is through code. If IsThreeState is true, 
clicking the check box cycles through all three possible states. 
The ToggleButton class also defines three events that fire when the check box enters specific states: 
Checked, Unchecked, and Indeterminate. In most cases, it’s easier to consolidate this logic into one 
event handler by handling the Click event that’s inherited from ButtonBase. The Click event fires 
whenever the button changes state. 
The RadioButton 
The RadioButton also derives from ToggleButton and uses the same IsChecked property and the same 
Checked, Unchecked, and Indeterminate events. Along with these, the RadioButton adds a single 
property named GroupName, which allows you to control how radio buttons are placed into groups. 
Ordinarily, radio buttons are grouped by their container. That means if you place three RadioButton 
controls in a single StackPanel, they form a group from which you can select just one of the three. On the 
other hand, if you place a combination of radio buttons in two separate StackPanel controls, you have 
two independent groups on your hands. 
The GroupName property allows you to override this behavior. You can use it to create more than 
one group in the same container or to create a single group that spans multiple containers. Either way, 
the trick is simple—just give all the radio buttons that belong together the same group name. 
Consider this example: 
<StackPanel> 
<Border Margin="5" Padding="5" BorderBrush="Yellow" BorderThickness="1" 
CornerRadius="5"> 
<StackPanel> 
<RadioButton Content="Group 1"></RadioButton> 
<RadioButton Content="Group 1"></RadioButton> 
<RadioButton Content="Group 1"></RadioButton> 
<RadioButton GroupName="Group3" Content="Group 3"></RadioButton> 
</StackPanel> 
</Border> 
<Border Margin="5" Padding="5" BorderBrush="Yellow" BorderThickness="1" 
CornerRadius="5"> 
<StackPanel> 
<RadioButton Content="Group 2"></RadioButton> 
<RadioButton Content="Group 2"></RadioButton> 
<RadioButton Content="Group 2"></RadioButton> 
<RadioButton GroupName="Group3" Content="Group 3"></RadioButton> 
</StackPanel> 
</Border> 
</StackPanel> 
Here, there are two containers holding radio buttons but three groups (see Figure 5-8). The final 
radio button at the bottom of each group box is part of a third group. In this example, it makes for a 
confusing design, but there may be some scenarios where you want to separate a specific radio button 
from the pack in a subtle way without causing it to lose its group membership. 
www.it-ebooks.info
CHAPTER 5  ELEMENTS 
166 
Figure 5-8. Grouping radio buttons 
Tooltips and Pop-Ups 
Silverlight has a flexible model for tooltips (those infamous yellow boxes that pop up when you hover 
over something interesting). Because tooltips in Silverlight are content controls, you can place virtually 
anything inside a tooltip. 
Tooltips are represented by the ToolTip content control. However, you don’t add the ToolTip 
element to your markup directly. Instead, you use the ToolTipService to configure a tooltip for an 
existing element, by setting attached properties. Silverlight will then create the ToolTip automatically 
and display it when it’s needed. 
The simplest example is a text-only tooltip. You can create a text-only tooltip by setting the 
ToolTipService.ToolTip property on another element, as shown here: 
<Button ToolTipService.ToolTip="This is my tooltip" 
Content="I have a tooltip"></Button> 
When you hover over this button, the text “This is my tooltip” appears in a gray pop-up box. 
Customized Tooltips 
If you want to supply more ambitious tooltip content, such as a combination of nested elements, you 
need to break the ToolTipService.ToolTip property out into a separate element. Here’s an example that 
sets the ToolTip property of a button using more complex nested content: 
www.it-ebooks.info
CHAPTER 5  ELEMENTS 
167 
<Button Content="I have a fancy tooltip"> 
<ToolTipService.ToolTip> 
<StackPanel> 
<TextBlock Margin="3" Text="Image and text"></TextBlock> 
<Image Source="happyface.jpg"></Image> 
<TextBlock Margin="3" Text="Image and text"></TextBlock> 
</StackPanel> 
</ToolTipService.ToolTip> 
</Button> 
As in the previous example, Silverlight implicitly creates a ToolTip element. The difference is that in 
this case the ToolTip object contains a StackPanel rather than a simple string. Figure 5-9 shows the 
result. 
Figure 5-9. A fancy tooltip 
 Note  Don’t put user-interactive controls in a tooltip because the ToolTip page can’t accept focus. For example, 
if you place a button in a ToolTip, the button will appear, but it isn’t clickable. (If you attempt to click it, your mouse 
click will just pass through to the page underneath.) If you want a tooltip-like page that can hold other controls, 
consider using the Popup control instead, which is discussed shortly, in the section named “The Popup.” 
At this point, you might be wondering if you can customize other aspects of the tooltip’s 
appearance, such as the standard gray background. You can get a bit more control by explicitly defining 
the ToolTip element when setting the ToolTipService.ToolTip property. Because the ToolTip is a content 
control, it provides a number of useful properties. You can adjust size and alignment properties (such as 
Width, Height, MaxWidth, HoriztontalContentAlignment, Padding, and so on), font (FontFamily, 
FontSize, FontStyle, and so on), and color (Background and Foreground). You can also use the 
www.it-ebooks.info
CHAPTER 5  ELEMENTS 
168 
HorizontalOffset and VerticalOffset properties to nudge the tooltip away from the mouse pointer and 
into the position you want, with negative or positive values. 
Using the ToolTip properties, the following markup creates a tooltip that uses a red background and 
makes the text inside white by default: 
<Button Content="I have a fancy tooltip"> 
<ToolTipService.ToolTip> 
<ToolTip Background="DarkRed" Foreground="White"> 
<StackPanel> 
<TextBlock Margin="3" Text="Image and text"></TextBlock> 
<Image Source="happyface.jpg"></Image> 
<TextBlock Margin="3" Text="Image and text"></TextBlock> 
</StackPanel> 
</ToolTip> 
</ToolTipService.ToolTip> 
</Button> 
If you assign a name to your tooltip, you can also interact with it programmatically. For example, 
you can use the IsEnabled property to temporarily disable a ToolTip and IsOpen to programmatically 
show or hide a tooltip (or just check whether the tooltip is open). You can also handle its Opened and 
Closed events, which is useful if you want to generate the content for a tooltip dynamically, just as it 
opens. 
 Tip  If you still want more control over the appearance of a tooltip—for example, you want to remove the black 
border or change its shape—you simply need to substitute a new control template with the visuals you prefer. 
Chapter 15 has the details. 
The Popup 
The Popup control has a great deal in common with the ToolTip control, although neither one derives 
from the other. 
Like the ToolTip, the Popup can hold a single piece of content, which can include any Silverlight 
element. (This content is stored in the Popup.Child property, rather than the ToolTip.Content property.) 
Also, like the ToolTip, the content in the Popup can extend beyond the bounds of the page. Lastly, the 
Popup can be placed using the same placement properties and shown or hidden using the same IsOpen 
property. 
The differences between the Popup and ToolTip are more important. They include the following: 
• The Popup is never shown automatically: You must set the IsOpen property for it 
to appear. The Popup does not disappear until you explicitly set its IsOpen 
property to false. 
• The Popup can accept focus: Thus, you can place user-interactive controls in it, 
such as a Button. This functionality is one of the key reasons to use the Popup 
instead of the ToolTip. 
Because the Popup must be shown manually, you may choose to create it entirely in code. However, 
you can define it just as easily in XAML markup—just make sure to include the Name property, so you 
www.it-ebooks.info
Documents you may be interested
Documents you may be interested