Ich habe ein Gitter-Steuerelement, das unter Verwendung von Stern, z.B.Wie erhalte ich WPF-Rasterspalten, die mit einem Stern definiert sind, um den Inhalt abzuschneiden?
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50*" />
<ColumnDefinition Width="100*" />
<ColumnDefinition Width="50*" />
</Grid.ColumnDefinitions>
jedoch ein langes TextBlock
im Netz setzen, dass die Proportionen überläuft verursacht verärgert sein. z.B.
<TextBlock Text="Foo" Grid.Column="0" />
<TextBlock Text="Some long text here which overflows" Grid.Column="1" />
<TextBlock Text="Foo" Grid.Column="2" />
Dies bewirkt, dass die zentrale Spalte mehr als doppelt so groß ist wie die anderen beiden. Wie pflege ich die angegebenen Proportionen? Ist es möglich, den Inhalt zu schneiden?
Ich habe TextTrimming="CharacterEllipsis"
auf die TextBlocks
gesetzt, aber kein Glück.
bearbeiten
Entscheidend scheint es, das Gitter ist in einem DataTemplate
, fügen Sie das folgende Verhalten zu beobachten,
<!-- FallbackValue is just a quick hack to get some rows to show at design-time -->
<ListBox ItemsSource="{Binding Foo, FallbackValue=1234}"
HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50*" />
<ColumnDefinition Width="100*" />
<ColumnDefinition Width="50*" />
</Grid.ColumnDefinitions>
<TextBlock Text="Foo" Grid.Column="0" />
<TextBlock Text="Some long text here which overflows" TextTrimming="CharacterEllipsis" Grid.Column="1" />
<TextBlock Text="Foo" Grid.Column="2" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Der Grund, warum dies wichtig ist, dass ich eine andere Grid
haben als ein Geschwister von ListBox
, das die "Kopfzeilen" für die in der ListBox
gezeigten Spalten wie folgt anzeigt:
<Grid>
... Headers and column definitions here
</Grid>
<ListBox ...>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
... Matching column definitions here
</Grid>
</DateTemplate>
</ListBox.ItemTemplate>
</ListBox>
und so ist es wichtig, dass die Spalten übereinstimmen.
Ich habe versucht, die ColumnDefinitions
innerhalb des DataTemplate
an den externen Grid
ColumnDefinitions
aber ich kann nicht leicht eine Bindung Verweis auf sie zu binden.
Ich bin eine neue WPF-Anwendung, indem zu reproduzieren nicht in der Lage und einfügen und diese XAML im Fenster. Sind Sie sicher, dass Sie alle Ihre Vorlagen/Codes hier eingeben? Es könnte einen Stil/Auslöser/Vorlage/Animation geben, die interferieren. Versuchen Sie, das Problem minimal darzustellen. –
normalerweise 'auto' width hat ein solches Problem,' * 'wird die Breite beschränken, es sei denn, es gibt eine automatische Breite in einem seiner übergeordneten Container. – pushpraj
Ich habe es reproduziert und es trimmt korrekt mit 'TextTrimming = "CharacterEllipsis"' – AxdorphCoder