簡體   English   中英

如何防止帶有 TextTrimming CharacterEllipsis 的 TextBlock 擴展具有自動寬度的列

[英]How to prevent a TextBlock with TextTrimming CharacterEllipsis to extend Column with Width Auto

我有以下 XAML

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <TextBlock Grid.Row="0" Grid.Column="0" Text="Hello World" />
        <TextBlock Grid.Row="1" Grid.Column="0" Text="Hello ABC DEF World" TextTrimming="CharacterEllipsis" />
    </Grid>
</Window>

這導致以下用戶界面:

在此處輸入圖像描述

我希望 TextBlock“Hello ABC DEF World”修剪而不是擴展列寬。

要得到這個結果:

在此處輸入圖像描述

編輯:

想指出

  • 我不需要它是一個Grid它可以是任何內容控件( StackPanelDockPanlCanvas等等)
  • 我不需要它是一個TextBlock它可以是任何控件( RunLabel等等)

如果我想要的是通過不同的控件組合實現的,我非常願意嘗試一下。

我想要的非代碼術語:

  • 我要兩行文字,第一行文字是“主要”信息,第二行文字是“次要”信息。
  • “主要”信息應充分伸展以顯示其全文。
  • “次要”信息應該只延伸到主要信息,而不是更多,如果它更長,它應該修剪

我知道我可以通過以下 XAML 實現這個目標:

<TextBlock ...
           x:Name="MainInfo" />
<TextBlock ...
           MaxWidth="{Binding Mode=OneWay, Path=ActualWidth, ElementName=MainInfo}" />

但如果可能的話,我想避免在ActualWidthBinding

我希望HorizontalAlignment = Left; 會阻止TextBlock拉伸的願望,但事實並非如此。

但如果可能的話,我不想在 ActualWidth 上使用 Binding。

那么,您需要以某種方式定義寬度約束。 Auto實際上意味着該列將隨着其中最寬的元素一起增長,即本例中的“次要”信息TextBlock

因此,您應該將列的Width設置為MainInfoActualWidth ,例如使用綁定。 或者以編程方式。 無論哪種方式,您都必須以一種或另一種方式設置它。

您可以通過多種方式實現這一目標。

取決於確切的預期目的。

一個值得注意且簡單的例子是使用一些技巧

您可以將主文本塊和一個矩形放在水平對齊的堆棧面板中,行跨度為 2,並且 Z 索引高於輔助文本塊。 您將矩形設置為高度等於兩個文本塊的總和,寬度必須由您根據所需規格設置。 這兩個文本塊必須設置固定高度,並且在帶有矩形的堆棧面板內的文本塊必須與堆棧面板內的頂部垂直對齊。 如果實施正確,結果應該是一個矩形,它覆蓋了使輔助文本塊大於主文本塊的輔助文本塊的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM