c# - 容器放大时如何放大标签

标签 c# .net wpf xaml mvvm

我在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"属性。但是,我希望标签随着窗口的扩大而增长。

最佳答案

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

关于c# - 容器放大时如何放大标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13110447/

相关文章:

c# - 纠正我在 mvc 中的 url 路由

c# - 在 C# 中使用元组,(A, B, C) vs Tuple<string, string, string>

c# - 通用 .Net 生产者/消费者

c# - 挂接到 WPF 窗口中的 Windows 消息循环会在内部添加白色边框

c# - 如何在 Global.aspx 的 Application_Start 中获取完整的主机名+端口号?

c# - 使用 jet.oledb.4.0 导入 Excel 工作表,将第一行设置为列名

.net - 什么是都柏林?它与 WCF 有何关系?

c# - 如何在 .NET 中获取 xml 元素的流位置

C# wpf DbContext 无法隐式转换类型

wpf - XAML - 使用来自另一个程序集的资源字典中的字体