2010-11-24 5 views
1

Wie der Titel sagt: Gibt es eine elegante Möglichkeit, bestimmte Spalten in einem dynamischen UniformGrid in der Größe veränderbar zu machen?Elegante Methode zum Aktivieren bestimmter Spalten in einem dynamischen WPF UniformGrid in der Größe veränderbar

Die Details:

Ich habe ein Item und stellen Sie die Itemspaneltemplate vom Typ Uniform sein. Das ItemTemplate ist auf ein benutzerdefiniertes Steuerelement festgelegt, das den Spalteninhalt rendert. Hier

ist der XAML-Auszug:

<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> 

Nun, was ich versuche zu erreichen ist, um es möglich zu machen, dass bestimmte Spalten der Größe veränderbar, so dass sich eine statische Breite geben und ermöglichen gleichzeitig die anderen Spalten müssen gleichmäßig in der Breite bemessen sein.

Hat jemand eine Richtung, auf die er mich hinweist? Ich hatte gehofft, zu spezifische kundenspezifische Implementierungen des Rendering des UniformGrid zu vermeiden, gibt es einen schlauen und leichten Weg dies zu tun?

Dank im Voraus in Bezug Ole

Antwort

1

Wenn Sie ein paar Spalten mit statischer Breite zu halten versuchen und lassen Sie andere haben eine dynamische Breite, würde ich sagen UniformGridPanel mit gehen nicht die richtigen ist.

Warum gehst du nicht mit StackPanel mit Horizontal Orientation? Von deinem Code sehe ich, dass du nur eine Zeile brauchst.

Wenn das für Sie nicht funktioniert, gehen Sie mit Grid. Sie müssen etwas Code schreiben, aber das wird Ihnen die besten Ergebnisse geben. Sie können GridSplitter verwenden, um Grid Spalten in der Größe veränderbar zu machen.

+0

Dank Decyclon. Ich habe zuerst ein StackPanel ausprobiert, aber ich hatte Probleme, den Inhalt der "Spalten" automatisch auf die größtmögliche Breite zu skalieren. Am Anfang scheint ein Gitter eine gute Wahl zu sein, aber ist es möglich, es dem Templating zu überlassen, das ein ItemsControl erlaubt? –

+1

Natürlich ist es möglich. Dieser Artikel (http://www.scottlogic.co.uk/blog/colin/2010/11/using-a-grid-as-the-panel-for-an-itemscontrol/) zeigt Ihnen, wie Sie das tun. – decyclone

+0

Sieht so aus, als hättest du meinen Tag gerettet. Danke vielmals. Ich werde es versuchen. –