Если я установлю ширину столбца на *
, изначально они будут одинаковой ширины, но если элемент будет больше, чем допустимое количество, он будет растягивать ширину столбца.
Как я могу заставитьСетка, чтобы сохранить ее столбцы одинакового размера с явным определением размера?
Я не могу использовать UniformGrid, потому что эта Сетка используется в ItemsControl, и Предметы должны быть помещены в определенный Grid.Row
/ Grid.Column
spot
Edit Вот пример моего текущего кода.
<DockPanel>
<!-- Not showing code here for simplicity -->
<local:ColumnHeaderControl DockPanel.Dock="Top" />
<local:RowHeaderControl DockPanel.Dock="Left" />
<ItemsControl ItemsSource="{Binding Events}">
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Grid.Column"
Value="{Binding DueDate.DayOfWeek,
Converter={StaticResource EnumToIntConverter}}" />
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</ItemsPanel>
</ItemsControl>
</DockPanel>
Правка # 2 Вот мое окончательное решение.Это делает столбцы правильного размера, и он сохраняет правильный размер при изменении размера приложения.
<ColumnDefinition Width="{Binding
ElementName=RootControl,
Path=ActualWidth,
Converter={StaticResource MathConverter},
ConverterParameter=(@VALUE-150)/7}" />
150 - ширина заголовков строк + все поля и границы.Я на самом деле в процессе обновления моего MathConverter
до IMultiValueConverter
, так что я могу связать оба параметра (Если вы заинтересованы в коде конвертера, его можно найти здесь , хотя это толькооднозначный преобразователь)