那是因为你的第一个StatusBarItem
占据了完整的位置,而第二个StatusBarItem
不适合StatusBar
试试这段代码看看它做了什么
<StatusBar
x:Name="MainStatusBar" Margin="14,462,0,0" HorizontalAlignment="Left" Width="600" VerticalAlignment="Top">
<StatusBarItem MaxWidth="550">
<TextBlock
x:Name="StatusBarTextBlock"
TextWrapping="NoWrap"
Text="{Binding StatusBarText, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
</StatusBarItem>
<StatusBarItem HorizontalAlignment="Right" MinWidth="75">
<TextBlock
x:Name="StatusBarTimeBlock"
TextWrapping="NoWrap"
Text="{Binding SearchTime, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
</StatusBarItem>
</StatusBar>
你有 600pxStatusBar
和 Max of 550px 第一个 StatusBarItem... 所以第二个只剩下 50pxStatusBarItem
所以它不适合你的 StatusBar。在您的代码中,您没有Width
为您指定属性,StatusBarTextBlock
因此需要全部(如果文本足够长)。
现在让我们尝试一些不同的东西......
<StatusBar
x:Name="MainStatusBar" Margin="14,462,0,0" HorizontalAlignment="Left" Width="600" VerticalAlignment="Top">
<StatusBarItem HorizontalAlignment="Right" MinWidth="250">
<TextBlock
x:Name="StatusBarTimeBlock"
TextWrapping="NoWrap"
Text="{Binding SearchTime, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
</StatusBarItem>
<StatusBarItem>
<TextBlock
x:Name="StatusBarTextBlock"
TextWrapping="NoWrap"
Text="{Binding StatusBarText, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
</StatusBarItem>
</StatusBar>
我切换了 order ofStatusBarItems
并将 MinWidth of 设置TimeBlock StatusBarItem
为 250px ......好吧,它被添加到了StatusBar
并且它不再忽略 MinWidth 因为它是第一项并且它适合 600px StatusBar
。
所以MinWidth
只有在没有足够的空间时才被忽略StatusBar
。
但是,如果您注意我提供的代码,您可能会注意到一些东西。有
<StatusBarItem HorizontalAlignment="Right" ... >
这并不是说你的StatusBarItem
withStatusBarTimeBlock
会在右边......因为StatusBar
无论如何,项目总是从左到右添加。所以它可能会向右对齐,但StatusBar
如果没有其他项目,它只会与下一个项目或末尾对齐。
编辑
我的回答是为了回答你的问题
当 StatusBarTextBlock 太长时,StatusBarTimeBlock 会小于 75px。你有什么想法为什么?
它确实做到了,但它似乎不是你想要的。
正如我所说,StatusBar
无论如何,总是从左到右添加项目。那是因为它的项目托管在DockPanel
. 如果您知道如何DockPanel
工作,您也知道,您可以将一些项目停靠在右侧。
所以你可以这样做。它恰好是你想要的,但没有要求。
<StatusBar x:Name="MainStatusBar" Margin="14,490,0,0" HorizontalAlignment="Left" Width="600" VerticalAlignment="Top">
<StatusBarItem DockPanel.Dock="Right" HorizontalAlignment="Right" MinWidth="75">
<TextBlock
x:Name="StatusBarTimeBlock"
TextWrapping="NoWrap"
Text="{Binding SearchTime, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
</StatusBarItem>
<StatusBarItem>
<TextBlock
x:Name="StatusBarTextBlock"
TextWrapping="NoWrap"
Text="{Binding StatusBarText, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
</StatusBarItem>
</StatusBar>
请注意,这StatusBarTimeBlock
又是“XAML 中的第一个”,但它停靠在右侧。