1

就像标题所说:有没有一种优雅的方法可以使动态 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

4

1 回答 1

1

如果您试图保留几列具有静态宽度并让其他列具有动态宽度,我会说UniformGrid这是Panel不合适的。

你为什么不去StackPanelwith Horizontal Orientation?从您的代码中,我看到您只需要一行。

如果这对您不起作用,请使用Grid. 您将需要编写一些代码,但这会给您带来最好的结果。您可以使用GridSplitter使Grid列可调整大小。

于 2010-11-24T12:51:43.463 回答