Поведение, которое я ищу, в основном таково, что DockPanel, я хотел бы, чтобы последний ребенок заполнил доступное пространство. Уловка состоит в том, что я хотел бы, чтобы это был последний видимый ребенок. В моем случае у меня есть два вида, которые я хотел бы показать бок о бок.WPF: DockPanel Последнее видимое заполнение ребенка?
До сих пор я пробовал применять два разных стиля к сетке, и ни одна из них не работает. Я также попытался использовать конвертер, который, казалось, работал в теории (я смог вернуть «Авто» с помощью double.NaN), но я не был уверен, как вернуть ширину «*» из кода.
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*">
<ColumnDefinition.Style>
<Style TargetType="{x:Type ColumnDefinition}">
<Style.Triggers>
<DataTrigger Binding="{Binding Visibility, ElementName=ccSomeItems}" Value="Collapsed">
<Setter Property="Width" Value="0" />
</DataTrigger>
</Style.Triggers>
</Style>
</ColumnDefinition.Style>
</ColumnDefinition>
<ColumnDefinition Width="*">
<ColumnDefinition.Style>
<Style TargetType="{x:Type ColumnDefinition}">
<Style.Triggers>
<DataTrigger Binding="{Binding SomeOtherItems.AllOtherItems.Count, Converter={StaticResource IntegerToVisibilityConverter}}" Value="Collapsed">
<Setter Property="Width" Value="0" />
</DataTrigger>
</Style.Triggers>
</Style>
</ColumnDefinition.Style>
</ColumnDefinition>
</Grid.ColumnDefinitions>
<ContentControl x:Name="ccSomeItems" Content="{Binding SomeItems}" Margin="4" Visibility="{Binding SomeItems.AllItems.Count, Converter={StaticResource IntegerToVisibilityConverter}}" />
<ContentControl Grid.Column="1" Content="{Binding SomeOtherItems}" Margin="4" Visibility="{Binding SomeOtherItems.AllOtherItems.Count, Converter={StaticResource IntegerToVisibilityConverter}}" />
</Grid>
Я запутался ... почему вы используете 'Grid' вместо' DockPanel', если вы хотите, чтобы поведение 'DockPanel'? Кроме того, вы можете использовать тип единицы «GridUnitType.Star» для указания размеров звезд в коде позади, например: 'new GridLength (2, GridUnitType.Star)' – Rachel
Я использую Grid для создания поведения, которое делает DockPanel не содержат (насколько мне известно). Как я уже сказал, уловка состоит в том, что я хотел бы заполнить последний ** видимый ** ребенок. Я исследую класс GridLength. –