C# 最小宽度无效

C# 最小宽度无效,c#,wpf,statusbar,textblock,css,C#,Wpf,Statusbar,Textblock,Css,我有一个带有两个文本块项的状态栏: 当StatusBarTextBlock过长时,StatusBarTimeBlock将小于75px 你知道为什么吗?那是因为你的第一个StatusBarItem完全发生了,第二个StatusBarItem不适合StatusBar 试试这段代码,看看它是做什么的 您有600pxStatusBar和最大550px的第一个StatusBarItem。。。因此,第二个StatusBarItem只剩下50像素,因此它不适合您的状态栏。在代码中,您没有指定Statu

我有一个带有两个文本块项的状态栏:


StatusBarTextBlock
过长时,
StatusBarTimeBlock
将小于
75px


你知道为什么吗?

那是因为你的第一个
StatusBarItem
完全发生了,第二个
StatusBarItem
不适合
StatusBar

试试这段代码,看看它是做什么的


您有600px
StatusBar
和最大550px的第一个StatusBarItem。。。因此,第二个
StatusBarItem
只剩下50像素,因此它不适合您的状态栏。在代码中,您没有指定
StatusBarTextBlock
Width
属性,因此需要全部(如果文本足够长)

现在让我们尝试一些不同的


我切换了
StatusBarItem
的顺序,并将
TimeBlock StatusBarItem
的最小宽度设置为250px。。。它被添加到
状态栏
,并且不再忽略MinWidth,因为它是第一项,适合600px
状态栏

因此,只有当状态栏中没有足够的空间时,
MinWidth
才会被忽略

但是如果你注意我提供的代码,你可能会注意到一些东西。有


这并不是说您的
StatusBarTimeBlock
状态项将位于右侧。。。因为无论发生什么情况,
StatusBar
中的项目总是从左到右添加。 因此,它可能会向右对齐,但只有在没有其他项目的情况下才会对齐到下一个项目或状态栏的末尾

编辑

我的回答是为了回答你的问题

当StatusBarTimeBlock过长时,StatusBarTimeBlock将小于75px。 你知道为什么吗?

的确如此,但看起来这不是你想要的

正如我所说,
StatusBar
中的项目总是从左到右添加,无论发生什么情况。这是因为它的项目托管在
DockPanel
中。 如果您知道
DockPanel
的工作原理,您也知道可以将某些项目停靠到右侧

所以你可以这样做。这正好是你想要的,但不是你要求的


请注意,
StatusBarTimeBlock
再次是“XAML中的第一个”,但它停靠在右侧。

您是对的

    <StatusBar 
        x:Name="MainStatusBar"
        Grid.Row="1" Grid.ColumnSpan="2" Height="30"
        HorizontalContentAlignment="Left" VerticalContentAlignment="Center">

        <StatusBarItem HorizontalAlignment="Right"
                       DockPanel.Dock="Right">
            <TextBlock 
                x:Name="StatusBarTimeBlock"
                HorizontalAlignment="Left"
                VerticalAlignment="Center"
                TextWrapping="NoWrap"
                MinWidth="75"
                Text="{Binding SearchTime, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
        </StatusBarItem>

        <StatusBarItem HorizontalAlignment="Left">
            <TextBlock
                x:Name="StatusBarTextBlock"
                HorizontalAlignment="Stretch"
                VerticalAlignment="Center"
                TextWrapping="NoWrap"
                Text="{Binding StatusBarText, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
        </StatusBarItem>

    </StatusBar>

如果StatusBarTimeBlock是第一个块,并且StatusBarItem具有DockPanel.Dock=“Right”,那么我的最小宽度始终保持75 px


谢谢大家!

如果时间块是XAML中的第一个项目,那么它也是绘制窗口中的第一个项目。StatusBarItem HorizontalAlignment=“Right”MinWidth=“75”中的MinWidth也不是更好的:-(但我考虑了StatusBarTextBlock的“overlow”属性(例如html中的“hidden”)@user2063921是的,我是这么说的。我只是想解释它是如何工作的,以及为什么它不适合您。@user2063921请再次阅读我的答案,我做了编辑。为了提供您想要的代码。不客气:)请不要在不必要时添加答案。如果我的回答对你有帮助,请使用评论。如果值得的话,请随意投票。很高兴我帮了忙:)