У меня есть XAML, показанный ниже (например). Если вы перетащите разделитель сетки до упора влево и продолжите перетаскивать мышь, правый столбец будет увеличиваться в размере за пределами окна - очевидно, это не то, что мне нужно.
Проблема в том, что я не могу установить жесткую MaxWidth в правом столбце, потому что пользователь может изменить размер окна, увеличив таким образом доступное пространство для этого столбца.
До сих пор я думаю, что мне нужно связать MaxWidth правого столбца с чем-то вроде клиентской области окна минус MinWidth левого плюс ширина столбца сплиттера. Но я бы хотел этого избежать, если это возможно. Мысли
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="450"
Height="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="100" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="200" MinWidth="200" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Button>Monkey</Button>
</Grid>
<GridSplitter Grid.Column="1" Width="7" ResizeBehavior="PreviousAndNext" />
<Grid Grid.Column="2" Margin="4">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<GroupBox Grid.Row="0" Header="Spaghetti" Margin="0, 0, 0, 5">
<ComboBox HorizontalAlignment="Stretch" VerticalAlignment="Stretch">Noodles</ComboBox>
</GroupBox>
<Expander Grid.Row="1" Header="Batman" IsExpanded="True" Margin="0, 0, 0, 5">
<Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch">Batman!</Button>
</Expander>
</Grid>
</Grid>
</Window>