TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

WPF ToolBar Example: Uses ToolBarTray

This WPF example uses the ToolBar control within a ToolBarTray. It nests Buttons within the ToolBars.

ToolBar. Programs often have buttons that are easy to access.

These are stored in ToolBars. We arrange ToolBars in a ToolBarTray. We use nested controls, like Buttons, to add functionality to our ToolBars.

Based on:

.NET 4.5

Example. First, a ToolBarTray is used to contain ToolBars. So we should add it first. Please drag a ToolBarTray from the Toolbox to your window Grid. You will probably want to adjust its size by dragging its corner.

Grid

Caution: When trying to nest a ToolBar within a ToolBarTray, you may need to simply edit the XAML. It may not work by dragging.

In this example, I add two ToolBars to the ToolBarTray. In the first ToolBar, I add two Buttons—a ToolBar can store Buttons and Images and other controls, just like other program areas.

Band: On the ToolBar element, add a Band attribute. This is the vertical index, starting at 0, of the ToolBar.

BandIndex: This is the horizontal index of the ToolBar, starting at zero on the left. It goes up when two ToolBars are on the same line.

Example markup: XAML

<Window x:Class="WpfApplication11.MainWindow"
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	Title="MainWindow" Height="350" Width="525">
    <Grid>
	<ToolBarTray HorizontalAlignment="Left" Height="74" Margin="10,10,0,0"
		     VerticalAlignment="Top" Width="497">
	    <ToolBar HorizontalAlignment="Right" Height="27"
		     Band="0" BandIndex="0">
		<Button Content="In band 1" Height="22" VerticalAlignment="Top" Width="75"/>
		<Button Content="Button" Height="22" VerticalAlignment="Top" Width="75"/>
	    </ToolBar>
	    <ToolBar HorizontalAlignment="Left" Height="27"
		     Band="1" BandIndex="0">
		<Button Content="In band 2" Height="22" VerticalAlignment="Top" Width="75"/>
	    </ToolBar>
	</ToolBarTray>
    </Grid>
</Window>

In testing this program, try dragging the ToolBars around. You should be able to position them on the same band, next to each other. Please see the next example for a way to access the Band and BandIndex properties with C# code.

Note: Some attributes on the above XAML, including the HorizontalAlignment ones are not necessary for the program to correctly work.

HorizontalAlignment

Example 2. Let us try something else. Variety makes life more entertaining. In this example, I added a Click event handler to the first Button in the above XAML. Type in Click, press equals and have Visual Studio make a Button_Click event.

Name: Please also assign a Name to the first ToolBar so it is easy to access from the Button_Click event handler.

Name

Example markup 2: XAML

<ToolBar HorizontalAlignment="Right" Height="27" Band="0" Name="Bar1">
    <Button Content="In band 1" Height="22" VerticalAlignment="Top" Width="75"
	    Click="Button_Click"/>

Next, we add some code to the contents of Button_Click. When you run it, this code will help you see how the Band and BandIndex properties change as ToolBars are dragged. It displays both Band and BandIndex.

Tip: The BandIndex is the horizontal index, while the Band is the vertical index. This program makes this concept clear.

Example code: C#

using System.Windows;

namespace WpfApplication11
{
    public partial class MainWindow : Window
    {
	public MainWindow()
	{
	    InitializeComponent();
	}

	private void Button_Click(object sender, RoutedEventArgs e)
	{
	    // ... Change the title when this button is clicked.
	    this.Title = "Band: " + this.Bar1.Band.ToString() +
		"; BandIndex: " + this.Bar1.BandIndex.ToString();
	}
    }
}

Summary. Programs can be complex to use, with lots of buttons. The ToolBar control, and its companion ToolBarPanel, makes it simpler to lay out these buttons. These controls make it possible for user store position controls.

Thus: We position ToolBars within a ToolBarPanel using the Band and BandIndex attributes in XAML.


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf