1

我在 WPF 中有一个自定义 UserControl,它有一个停靠在顶部的堆栈面板来替换标题栏功能。

堆栈面板的左侧有一个标签,其中包含一个文本块,用于在标签包含长字符串的情况下进行文本换行。

拖动控件时出现我的问题。随着窗口的拖动,我自然希望标签的文本显示得越来越多。

我希望标签随着窗口的扩大而扩大,但我不知道如何解决这个问题。

这是我为实现屏幕截图中的标题栏而编写的代码:

<Grid>
        <DockPanel>
            <StackPanel Name="titleBar" DockPanel.Dock="Top" Height="28" FlowDirection="RightToLeft" Orientation="Horizontal" Background="AliceBlue">
                <Button x:Name="btnClose" Margin="0,0,5,0" Click="btnClose_Click">                  
                </Button>
                <Button x:Name="btnRunQuery" ToolTip="Run Query">                   
                </Button>
                <Button x:Name="btnFilter" ToolTip="Toggle Filter" Click="btnFilter_Click">                    
                </Button>
                <Button x:Name="btnAttributes">      
                </Button>
                <Button x:Name="btnAll" Click="btnAll_Click">ALL</Button>
                <Label Name="lblTableName" FontSize="14" MaxWidth="150">
                    <TextBlock Name="tbTableName" TextTrimming="WordEllipsis" TextWrapping="NoWrap" FlowDirection="LeftToRight"/>
                </Label>
            </StackPanel>
        </DockPanel>
    </Grid>

编辑:我还想补充一点,当呈现用户控件时,我不希望标签的宽度超过 150。因此MaxWidth="150"属性。但是,我希望标签随着窗口的扩大而增长。

4

2 回答 2

2

使用 Grid 而不是 StackPanel。包含标签的最后一列应具有 Width="Auto"。您可以在此之前添加另一列(我的意思是标签列的右侧),使用 Width="*" 以便在窗口太宽时填充标签和按钮之间的空白区域。

于 2012-10-28T16:31:04.610 回答
0

您需要将标签锚定到边缘。单击标签时,您应该会看到 4 个边的锚定符号。锚定后,4 个符号将为黑色。

于 2012-10-28T16:24:51.607 回答