StatusBar
是 WPF 中用于显示应用程序底部状态信息的控件。它通常用于显示应用的当前状态、提示信息、进度条等。StatusBar
是 ItemsControl
的子类,因此可以包含多个不同类型的元素。
基本使用步骤
1. 添加 StatusBar
到 XAML
你可以在 XAML 文件中简单地声明一个 StatusBar
,并在其中放置多个状态项,如 TextBlock
、ProgressBar
等。
<Window x:Class="WpfApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="StatusBar Example" Height="200" Width="400">
<DockPanel>
<!-- 其他UI控件可以放在这里 -->
<!-- 底部的状态栏 -->
<StatusBar DockPanel.Dock="Bottom" Name="statusBar">
<!-- 状态栏的文本 -->
<StatusBarItem>
<TextBlock>Ready</TextBlock>
</StatusBarItem>
<!-- 另一个状态栏项目 -->
<StatusBarItem>
<TextBlock>Loading...</TextBlock>
</StatusBarItem>
<!-- 右对齐的进度条 -->
<StatusBarItem HorizontalAlignment="Right">
<ProgressBar Width="100" Height="16" IsIndeterminate="True"/>
</StatusBarItem>
</StatusBar>
</DockPanel>
</Window>
在这个示例中,StatusBar
被放置在窗口底部,并包含多个状态项,如文本和进度条。
2. 使用 StatusBarItem
StatusBar
内部可以包含多个 StatusBarItem
,每个 StatusBarItem
可以承载任意 WPF 控件(例如文本、按钮、进度条等)。你可以根据需要调整每个状态栏项的位置、大小、对齐方式等。
<StatusBar>
<StatusBarItem>
<TextBlock>状态: 正在加载</TextBlock>
</StatusBarItem>
<StatusBarItem HorizontalAlignment="Right">
<ProgressBar Width="120" Height="16" IsIndeterminate="False" Value="50"/>
</StatusBarItem>
</StatusBar>
StatusBarItem
:是StatusBar
中的容器,每个项可以包含不同的控件,如文本、图标、按钮等。HorizontalAlignment
:控制状态栏项的对齐方式(例如右对齐)。
3. 动态更新状态栏内容
你可以通过代码动态更新 StatusBar
的内容。例如,使用 C#
动态更新状态栏中的文本或进度条:
public MainWindow()
{
InitializeComponent();
// 更新状态栏文本
statusBar.Items.Add(new StatusBarItem { Content = "程序启动成功" });
// 动态更新进度条
ProgressBar progressBar = new ProgressBar
{
Width = 100,
Height = 16,
IsIndeterminate = false,
Value = 75
};
statusBar.Items.Add(new StatusBarItem { Content = progressBar });
}
常见功能和属性
-
StatusBarItem:
StatusBar
中的每个项,类似于ListViewItem
或MenuItem
,可以放置任意控件。<StatusBarItem> <TextBlock>状态:正在加载</TextBlock> </StatusBarItem>
-
HorizontalAlignment: 用于调整
StatusBarItem
的对齐方式。比如设置HorizontalAlignment="Right"
可以将状态项对齐到状态栏右侧。<StatusBarItem HorizontalAlignment="Right"> <TextBlock>右对齐的状态文本</TextBlock> </StatusBarItem>
-
ProgressBar: 状态栏中常见的元素之一,用于显示任务的进度。可以设置为确定或不确定状态。
<ProgressBar Width="100" Height="16" IsIndeterminate="True"/>
-
分隔符:可以通过添加
Separator
来在状态栏中添加间隔符。<StatusBar> <StatusBarItem> <TextBlock>状态1</TextBlock> </StatusBarItem> <Separator/> <StatusBarItem> <TextBlock>状态2</TextBlock> </StatusBarItem> </StatusBar>
复杂布局的状态栏
StatusBar
不仅可以包含简单的文本,还可以包含更复杂的布局,例如带有图标、按钮等元素的复合项。你可以通过嵌套其他容器控件,如 StackPanel
,实现复杂布局。
<StatusBar>
<StatusBarItem>
<StackPanel Orientation="Horizontal">
<Image Source="icon.png" Width="16" Height="16"/>
<TextBlock Text="图标状态"/>
</StackPanel>
</StatusBarItem>
<StatusBarItem HorizontalAlignment="Right">
<StackPanel Orientation="Horizontal">
<TextBlock Text="进度"/>
<ProgressBar Width="100" Height="16" Value="30"/>
</StackPanel>
</StatusBarItem>
</StatusBar>
动态更新状态栏示例
你可以通过后台代码动态更改状态栏中的内容,例如更新文本状态或进度条状态:
public void UpdateStatusBar(string statusMessage, double progressValue)
{
// 更新文本状态
statusBar.Items.Clear(); // 清除之前的状态栏项
statusBar.Items.Add(new StatusBarItem { Content = statusMessage });
// 更新进度条状态
ProgressBar progressBar = new ProgressBar
{
Width = 100,
Height = 16,
Value = progressValue
};
statusBar.Items.Add(new StatusBarItem { Content = progressBar });
}
小结
StatusBar
是一个非常灵活的控件,可以在应用程序的底部显示各种状态信息。- 它可以包含多个
StatusBarItem
,每个项都可以是文本、图标、按钮、进度条等。 - 状态栏的内容可以通过 XAML 静态设置,也可以通过 C# 动态更新,非常适合显示应用程序的运行状态。
如果有需要更复杂的状态栏布局或功能,也可以通过容器控件和后台代码进一步扩展。