Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF状态栏,拉伸文本块以尽可能多地占用空间_Wpf_Xaml_Statusbar - Fatal编程技术网

WPF状态栏,拉伸文本块以尽可能多地占用空间

WPF状态栏,拉伸文本块以尽可能多地占用空间,wpf,xaml,statusbar,Wpf,Xaml,Statusbar,我用3个文本块创建了自己的简单statusbarcontrol。现在我希望第一个文本块占用尽可能多的可用空间。我似乎还没做完。。现在它只需要显示文本所需的空间 XAML: 尝试将StatusBarItem的水平对齐和水平内容对齐设置为拉伸这很简单: 您已将StatusBarItem HorizontalAlignment=“Left”设置为“strech”,与HorizontalContentAlignment相同。 还建议在边框上设置边距=0。 这就是我所做的,它将对我起作用: <

我用3个文本块创建了自己的简单statusbarcontrol。现在我希望第一个文本块占用尽可能多的可用空间。我似乎还没做完。。现在它只需要显示文本所需的空间

XAML:



尝试将StatusBarItem的
水平对齐
水平内容对齐
设置为
拉伸
这很简单: 您已将StatusBarItem HorizontalAlignment=“Left”设置为“strech”,与HorizontalContentAlignment相同。 还建议在边框上设置边距=0。 这就是我所做的,它将对我起作用:

<StatusBarItem HorizontalAlignment="Stretch"
               HorizontalContentAlignment="Stretch">
    <Border BorderThickness="1"
            BorderBrush="Black"
            Margin="0"
            Padding="5 0 5 0"
            Background="White">
        <TextBlock Text="{Binding Message, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                   Foreground="{Binding TextColorMessage}"
                   Background="White"/>
    </Border>
</StatusBarItem>


如果这有帮助,请将StatusBarItem的HorizontalContentAlignment设置为Stretch,并将TextBlock的TextAlignment属性设置为Right。(第二个设置仅适用于第一个StatusBarItem,因为您似乎试图将其中的文本向右对齐。)

StatusBar只有一个HorizontalAlignment=right项目生效,因此您只能获取所需位置的最后一个项目。您可以设置statusBar的FlowDirection=“RightToLeft”并按相反顺序添加项。细节:右侧放置的项目不需要包围,但左侧的项目需要拉伸。以下代码:

<StatusBar VerticalAlignment="Bottom" FlowDirection="RightToLeft"><!--flow right to left cause items right aligned-->
    <!--make item's flow back left to right, avoid display disorder-->
    <TextBlock x:Name="textBlock_status_R1" Text="111.147.168.20" Grid.Column="2" Margin="10,0" FlowDirection="LeftToRight"/>
    <Separator/>
    <TextBlock x:Name="textBlock_status_R2" Text="Working" Margin="10,0" FlowDirection="LeftToRight"/>
    <Separator/>
    <!--To fill rest space,need StatusBarItem packing and default HorizontalAlignment="Stretch"-->
    <StatusBarItem FlowDirection="LeftToRight">
        <TextBlock x:Name="textBlock_status_L1" Text="Information here."/>
    </StatusBarItem>
</StatusBar>

“如果这有帮助,请标记为答案”,无需说明。OP已经知道了.THx,同样很简单:)由于代码示例,我将此标记为答案。弗洛里安的解决方案也很好。
<StatusBar VerticalAlignment="Bottom" FlowDirection="RightToLeft"><!--flow right to left cause items right aligned-->
    <!--make item's flow back left to right, avoid display disorder-->
    <TextBlock x:Name="textBlock_status_R1" Text="111.147.168.20" Grid.Column="2" Margin="10,0" FlowDirection="LeftToRight"/>
    <Separator/>
    <TextBlock x:Name="textBlock_status_R2" Text="Working" Margin="10,0" FlowDirection="LeftToRight"/>
    <Separator/>
    <!--To fill rest space,need StatusBarItem packing and default HorizontalAlignment="Stretch"-->
    <StatusBarItem FlowDirection="LeftToRight">
        <TextBlock x:Name="textBlock_status_L1" Text="Information here."/>
    </StatusBarItem>
</StatusBar>