Я пытаюсь создать ряд кнопок, которые будут выравниваться влево в нормальном состоянии и равномерно сжиматься, когда пространство, предоставленное контейнером, уже недостаточно для их нормального размера.Кнопки с TextTrimming в ограниченном пространстве Grid или StackPanel
Если есть достаточно мест, то StackPanel ведет себя правильный путь:
Если не хватает мест, Сетка с колоннами звезды размером обеспечивает то, что я хочу:
Как выполнить оба состояния с одним контейнером макета?
Мой XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="500">
<Window.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Margin" Value="5"/>
<Setter Property="Padding" Value="3"/>
<Setter Property="VerticalAlignment" Value="Top"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock TextTrimming="CharacterEllipsis" Text="{TemplateBinding Content}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Content="Save As" />
<Button Grid.Column="1" Content="Copy" />
<Button Grid.Column="2" Content="Exit Application" />
</Grid>
<StackPanel Grid.Row="1" Orientation="Horizontal">
<Button Content="Save As" />
<Button Content="Copy" />
<Button Content="Exit Application" />
</StackPanel>
</Grid>
</Window>
EDIT: Предположение о Novitchi (HorizontalAlignment влево для сетки) почти работы:
Спасибо, это работает почти так, как я ожидал (см. Мое редактирование). –
Для этого вам придется реализовать свою настраиваемую панель. Я не думаю, что вы можете сделать это с существующими панелями. Я бы не пошел туда, хотя, по-моему, все кнопки должны иметь фиксированную ширину. –