Ho un controllo Grid che è proporzionato utilizzando la stella e.g.Come si ottengono le colonne Griglia WPF definite con la stella per ritagliare il contenuto?
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50*" />
<ColumnDefinition Width="100*" />
<ColumnDefinition Width="50*" />
</Grid.ColumnDefinitions>
mettendo però un lungo TextBlock
nella griglia che trabocca provoca le proporzioni di essere sconvolto. per esempio.
<TextBlock Text="Foo" Grid.Column="0" />
<TextBlock Text="Some long text here which overflows" Grid.Column="1" />
<TextBlock Text="Foo" Grid.Column="2" />
Ciò fa sì che la colonna centrale sia più del doppio degli altri due. Come mantenere le proporzioni specificate? È possibile ritagliare il contenuto?
Ho impostato TextTrimming="CharacterEllipsis"
su TextBlocks
ma senza fortuna.
Modifica
Fondamentalmente sembra, la griglia è all'interno di un DataTemplate
, incollare il seguente di osservare il comportamento,
<!-- 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>
Il motivo per cui questo è importante è che ho un altro Grid
come un fratello di ListBox
che visualizza le "intestazioni" per le colonne mostrate nello ListBox
come segue,
<Grid>
... Headers and column definitions here
</Grid>
<ListBox ...>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
... Matching column definitions here
</Grid>
</DateTemplate>
</ListBox.ItemTemplate>
</ListBox>
e quindi è importante che le colonne corrispondano.
ho cercato di impegnare la ColumnDefinitions
all'interno del DataTemplate
all'esterno Grid
ColumnDefinitions
ma non posso ottenere facilmente un riferimento legarsi ad esso.
io non sono in grado di riprodurre con la creazione di un nuovo WPF app e incollare questo XAML nella finestra. Sei sicuro di aver messo tutti i tuoi modelli/codice qui? Potrebbe esserci uno stile/trigger/modello/animazione che interferisce. Cerca di fornire una rappresentazione minima del problema. –
solitamente la larghezza 'auto' ha tale problema,' * 'limiterà la larghezza a meno che non ci sia una larghezza automatica in uno dei suoi contenitori principali. – pushpraj
L'ho riprodotto e ritaglia correttamente con 'TextTrimming = "CharacterEllipsis"' – AxdorphCoder