代码之家  ›  专栏  ›  技术社区  ›  ovm

使动态WPF UniformGrid中的特定列可以调整大小的优雅方式

  •  1
  • ovm  · 技术社区  · 15 年前

    正如标题所说:有没有一种优雅的方法可以使动态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的呈现进行过于具体的自定义实现,有没有一种智能且简单的方法可以做到这一点?

    提前谢谢 关于 奥利

    1 回复  |  直到 15 年前
        1
  •  1
  •   decyclone    15 年前

    如果你想让几列保持静态宽度,让其他列保持动态宽度,我会说 UniformGrid 这是不对的 Panel 去吧。

    你为什么不带一个 StackPanel 具有 Horizontal Orientation ? 从你的代码中,我看到你只需要一行。

    如果这对你不起作用,那就去吧 Grid .你需要写一些代码,但这会给你最好的结果。你可以用 GridSplitter 使 网格 可调整大小的列。