04.ステータスバー項目の配置位置を設定する その2
「ステータスバー項目の配置位置を設定する その1」では、添付プロパティDockPanelによる配置について説明しました。
項目の配置は、添付プロパティを使用する以外にGridを使用して配置することも可能です。
Gridを使用するには、<StatusBar.ItemsPanel>~</StatusBar.ItemsPanel>内にGridの定義を記述します。このとき、項目のサイズに合わせた列を作成する場合はWidthに"Auto"を指定し、伸縮する列を作成するには"*"を指定します。
下記はGridを使用して項目を配置する例です。

<DockPanel>
<StatusBar DockPanel.Dock="Bottom">
<StatusBar.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</StatusBar.ItemsPanel>
<StatusBarItem>Item1</StatusBarItem>
<Separator Grid.Column="1"/>
<StatusBarItem Grid.Column="2">Item2</StatusBarItem>
<Separator Grid.Column="3"/>
<StatusBarItem Grid.Column="4">Item3</StatusBarItem>
</StatusBar>
<TextBox></TextBox>
</DockPanel>
Gridに項目を配置するには、<StatusBar.ItemsPanel>~</StatusBar.ItemsPanel>の間にGridの定義を作成する。
項目のサイズに合わせた列を作成する場合はWidthに"Auto"を指定し、伸縮する列を作成するには"*"を指定する。
05.イメージを表示する
ステータスバーの項目にイメージを表示するにはImageクラスを使用します。
下記は、プリンターのイメージを表示する例です。

<DockPanel Name="DockPanel1">
<StatusBar DockPanel.Dock="Bottom" Name="StatusBar1">
<StatusBar.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</StatusBar.ItemsPanel>
<StatusBarItem>Ready</StatusBarItem>
<Separator Grid.Column="1"/>
<StatusBarItem Grid.Column="4">
<StackPanel Orientation="Horizontal" Name="StackPanel1">
<!-- コードからイメージとテキストを配置する場合は下記をコメントにすること -->
<Image Source="Images/PrintHS.png" Width="16" Height="16"/>
<TextBlock>Printing...</TextBlock>
</StackPanel>
</StatusBarItem>
</StatusBar>
<TextBox></TextBox>
</DockPanel>
'コードからイメージを配置する場合は下記のようにします
'XAML内の項目内に配置されたStackPanelにイメージとテキストを設定する例です
Dim imgPrint As New Image
Dim bmpImage As New BitmapImage
Dim textBlock1 As New TextBlock
'イメージの作成
imgPrint.Source = New BitmapImage(New Uri("Images/PrintHS.png", UriKind.Relative))
imgPrint.Width = 16
imgPrint.Height = 16
'ステータスバー内のスタックパネル(StackPanel1)にイメージを追加
StackPanel1.Children.Add(imgPrint)
'ステータスバー内のスタックパネル(StackPanel1)に"Printing..."を追加
textBlock1.Text = "Printing..."
StackPanel1.Children.Add(textBlock1)
// コードからイメージを配置する場合は下記のようにします
// XAML内の項目内に配置されたStackPanelにイメージとテキストを設定する例です
Image imgPrint = new Image();
BitmapImage bmpImage = new BitmapImage();
TextBlock textBlock1 = new TextBlock();
// イメージの作成
imgPrint.Source = new BitmapImage(new Uri("Images/PrintHS.png", UriKind.Relative));
imgPrint.Width = 16;
imgPrint.Height = 16;
// ステータスバー内のスタックパネル(StackPanel1)にイメージを追加
StackPanel1.Children.Add(imgPrint);
// ステータスバー内のスタックパネル(StackPanel1)に"Printing..."を追加
textBlock1.Text = "Printing...";
StackPanel1.Children.Add(textBlock1);
イメージを表示するにはImageクラスを使用する。
