2010-11-24 199 views
1

像標題所示:是否有一種優化方式可以使動態UniformGrid中的特定列可以調整大小?使動態WPF 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

如果你想保持與靜態寬度的幾列,讓別人有一個動態的寬度,我會說UniformGrid不是去用正確的Panel

爲什麼不去StackPanelHorizontal Orientation?從你的代碼中,我看到你只需要一行。

如果這不適用於您,請使用Grid。你需要編寫一些代碼,但這會給你最好的結果。您可以使用GridSplitter來調整Grid列的大小。

+0

謝謝decyclone。我首先嚐試了一個StackPanel,但是我在自動調整「列」的內容到最大寬度時遇到了問題。起初Grid似乎是一個不錯的選擇,但可以讓它做一個ItemsControl允許你做的模板嗎? – 2010-11-24 13:07:17