Como posso fazer com que minhas colunas da grade sempre tenham a mesma largura?
Se eu definir a largura da coluna como*
, eles têm a mesma largura inicialmente, mas se um item for maior que o valor permitido, ele aumentará a largura da colun
omo posso forçar minha grade a manter suas colunas do mesmo tamanho com a definição explícita de um tamanh
Eu não posso usar um UniformGrid porque esta Grade está sendo usada em um ItemsControl e os Itens precisam ser colocados emGrid.Row
/Grid.Column
ponto
Edita Aqui está uma amostra do meu código atual.
<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>
Edit # 2 Aqui está a minha solução final. Torna as colunas do tamanho correto e mantém o tamanho correto quando o aplicativo é redimensionad
<ColumnDefinition Width="{Binding
ElementName=RootControl,
Path=ActualWidth,
Converter={StaticResource MathConverter},
ConverterParameter=(@VALUE-150)/7}" />
150 é a largura dos cabeçalhos das linhas + todas as margens e bordas. Na verdade, estou no processo de atualizar meuMathConverter
para umIMultiValueConverter
para vincular os dois parâmetros (se você estiver interessado no código do conversor, ele pode ser encontradoaqu, embora seja apenas o conversor de valor único)