在状态栏中使用分隔符

Posted

技术标签:

【中文标题】在状态栏中使用分隔符【英文标题】:Using Separator in StatusBar 【发布时间】:2012-02-19 23:24:31 【问题描述】:

我有一个带有 StatusBar 控件的 WPF 窗口。下面是我的状态栏的 xaml。我试图在 StatusBarItems 之间放置一个分隔符。但是发生的情况是所有分隔符都位于第一个 StatusBarItem 之后。

如何让分隔符定位在状态栏中的每个项目之后?

我确实注意到,如果我不使用 ItemsPanelTemplate,分隔符可以正常工作。如何让以下 xaml 中的分隔符正确定位?

        <StatusBar Grid.Row="2" Height="23" Name="myStatusBar" VerticalAlignment="Bottom" >
        <StatusBar.ItemsPanel>
            <ItemsPanelTemplate>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="100"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="100"/>
                        <ColumnDefinition Width="100"/>
                        <ColumnDefinition Width="100"/>
                    </Grid.ColumnDefinitions>
                </Grid>
            </ItemsPanelTemplate>
        </StatusBar.ItemsPanel>
        <StatusBarItem Grid.Column="0">
            <StackPanel Orientation="Horizontal">
                <Image Source="..\Images\bullet_green.png" Height="15" Width="15" />
                <TextBlock Name="txtStatus" Height="18" Width="77" Text="Binding StatusBarStatus"/>
            </StackPanel>
        </StatusBarItem>
<Separator Width="1"/>
        <StatusBarItem Grid.Column="1">
            <StackPanel Orientation="Horizontal">
                <Image Source="..\Images\user_add.png" Height="15" Width="15" />
                <TextBlock Name="txtCurrentContact" Text="Binding StatusBarCurrentContact" />
            </StackPanel>
        </StatusBarItem>
<Separator Width="1"/>
        <StatusBarItem Grid.Column="2">
            <!--<ProgressBar Value="30" Width="80" Height="18"/>-->
            <StackPanel Orientation="Horizontal">
                <Image Source="..\Images\database03.png" Height="15" Width="15" />
                <TextBlock Name="txtDatabase" Text="Binding StatusBarDatabase" />
            </StackPanel>
        </StatusBarItem>
<Separator Width="1"/>
        <StatusBarItem Grid.Column="3">
            <TextBlock Name="txtMode" Text="Binding StatusBarMode"/>
        </StatusBarItem>

        <StatusBarItem Grid.Column="4">
            <TextBlock Name="txtTally" Text="Binding StatusBarTally"/>
        </StatusBarItem>
    </StatusBar>

【问题讨论】:

【参考方案1】:

您所有的分隔符都在第 0 列。将它们放在一列中,即:

 <StatusBarItem Grid.Column="0">
        <StackPanel Orientation="Horizontal">
            <Image Source="..\Images\bullet_green.png" Height="15" Width="15" />
            <TextBlock Name="txtStatus" Height="18" Width="77" Text="Binding StatusBarStatus"/>
        </StackPanel>
    </StatusBarItem>
    <Separator Width="1" Grid.ColumnSpan="2" Grid.Column="0" HorizontalAlignment="Center"/>
    <StatusBarItem Grid.Column="1">
        <StackPanel Orientation="Horizontal">
            <Image Source="..\Images\user_add.png" Height="15" Width="15" />
            <TextBlock Name="txtCurrentContact" Text="Binding StatusBarCurrentContact" />
        </StackPanel>
    </StatusBarItem>

【讨论】:

太棒了!谢谢,现在说得通了。

以上是关于在状态栏中使用分隔符的主要内容,如果未能解决你的问题,请参考以下文章

在状态栏中隐藏活动指示器[重复]

如何使标准偏差出现在状态栏中?

如何在状态栏中显示 tmux 环境变量(作为窗口格式)

多行文本框:在状态栏中显示当前行/字符索引

Android appbarlayout 高程出现在状态栏中

状态栏中图标的颜色 (Flutter)