Элегантный способ изменения размеров отдельных столбцов в динамической WPF UniformGrid - PullRequest
1 голос
/ 24 ноября 2010

, как сказано в заголовке: существует ли элегантный способ изменения размеров определенных столбцов в динамической UniformGrid?

Подробности :

У меня есть ItemsControl и я установил для ItemsPanelTemplate тип UniformGrid. ItemTemplate установлен на пользовательский элемент управления, который отображает содержимое столбца.

Вот выдержка из xaml:

<ItemsControl x:Name="PART_Dimensions" 
            Grid.Column="1" HorizontalAlignment="Stretch">
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>

        <UniformGrid Columns="{Binding 
            Path=ItemsSource.Count, 
            RelativeSource={RelativeSource FindAncestor,
            AncestorType={x:Type ItemsControl}}}" 
                        IsItemsHost="True"/>

    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
  <ItemsControl.ItemTemplate>
    <DataTemplate>

            <local:Dimension 
                PropertyA="{Binding SourceA}"
                ItemsSource="{Binding SourceB}" />

    </DataTemplate>
</ItemsControl.ItemTemplate>

Теперь я пытаюсь добиться того, чтобы определенные столбцы имели изменяемый размер, давая им статическую ширину, в то же время позволяя другим столбцам иметь одинаковый размер по ширине.

Кто-нибудь может указать мне направление? Я надеялся избежать слишком специфических пользовательских реализаций рендеринга UniformGrid, есть ли разумный и простой способ сделать это?

спасибо заранее с уважением Ole

1 Ответ

1 голос
/ 24 ноября 2010

Если вы пытаетесь сохранить несколько столбцов со статической шириной и позволить другим иметь динамическую ширину, я бы сказал, что UniformGrid не подходит Panel.

Почему бы невы идете с StackPanel с Horizontal Orientation?Из вашего кода я вижу, что вам нужна только одна строка.

Если это не работает для вас, перейдите к Grid.Вам нужно будет написать код, но это даст вам лучшие результаты.Вы можете использовать GridSplitter для изменения размера столбцов Grid.

...