繁体   English   中英

WPF StackPanel 带一个文本框修剪

[英]WPF StackPanel with one Textbox trimming

我有一个顶部带有文本栏的网格。 此文本栏应显示错误文本及其后面的“关闭”链接。 一旦有足够的空间,“关闭”文本将立即跟随错误文本(上图)。 如果网格的宽度减小,则应修剪错误文本,以便“关闭”文本仍然可见(下图)。

我尝试了各种各样的东西:StackPanels、Grids、DockPanels、Width、MaxWidth,......而且很容易在网格的右边缘有“关闭”文本,但我没有成功满足这个要求。

在此处输入图像描述

这是我尝试过的一个例子:

<DockPanel
    <TextBlock
        DockPanel.Dock="Left"
        FontWeight="Bold"
        Text="{Binding ErrorText}"
        TextTrimming="CharacterEllipsis">
    </TextBlock>
    <TextBlock>
        <Hyperlink Command="{Binding CloseCmd}">Close</Hyperlink>
    </TextBlock>
</DockPanel>

最后一个元素应该填充剩余的空间,但上面的文本框没有为“关闭”元素留下任何空间。

这应该给你你所追求的:

        <Grid HorizontalAlignment="Left">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>
            <TextBlock
                FontWeight="Bold"
                Text="This is some text that shall be trimmed if there is not enough room"
                TextTrimming="CharacterEllipsis" />
            <TextBlock Grid.Column="1">
                <Hyperlink>Close</Hyperlink>
            </TextBlock>
        </Grid>

一位同事给了我一个很好的解决方案:

<WrapPanel>
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>                
    </Grid.ColumnDefinitions>

    <TextBlock Grid.Column="0" TextTrimming="CharacterEllipsis" Margin="5" Text="{Binding ErrorText}" />
    <TextBlock Grid.Column="1" Margin="5" Text="Close" Foreground="Blue" />            
</Grid>

诀窍似乎是 WrapPanel,尽管这里没有任何东西被包裹。 我不知道为什么会这样,但确实如此。

尝试使用方向设置为垂直的 WrapPanel:

    <Grid>
    <WrapPanel Orientation="Vertical">
        <TextBlock TextTrimming="CharacterEllipsis">Some sample text</TextBlock>
        <Button>Close</Button>
    </WrapPanel>
</Grid>

如果我正确理解所有要求,您应该首先使用 dock=right 关闭,如下所示:

<DockPanel>
    <TextBlock DockPanel.Dock="Right">
        <Hyperlink Command="{Binding CloseCmd}">Close</Hyperlink>
    </TextBlock>
    <TextBlock

        FontWeight="Bold"
        Text="{Binding ErrorText}"
        TextTrimming="CharacterEllipsis">
    </TextBlock>
</DockPanel>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM