Поведение, которое я ищу, в основном похоже на 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)
- person Rachel   schedule 15.09.2014