2010-12-27 10 views
1

Ich habe folgende WPF-Fenster entworfen:In WPF ist es möglich, den Zellstandort des Elements in einem UniformGrid-Feld anzugeben?

<Window x:Class="Boris.Gui.Wpf.DragDropWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Width="286" Height="350" ResizeMode="CanMinimize" Title="Drag and Drop"> 

    <Window.Resources> 

     <!-- Sorted matches list panel --> 
     <ItemsPanelTemplate x:Key="SortedMatchesListPanel"> 
      <UniformGrid Rows="3" Columns="4" /> 
     </ItemsPanelTemplate> 

    </Window.Resources> 

    <Grid> 

     <ListBox 
      Name="SortedMatchesListBox" 
      Height="180" 
      Margin="12,85,12,0" 
      HorizontalAlignment="Stretch" 
      VerticalAlignment="Top" 
      ItemsPanel="{StaticResource ResourceKey=SortedMatchesListPanel}" /> 

    </Grid> 

</Window> 

Sobald er ausgeführt wird, wird die SortedMatchesListBox Liste mit den Elementen gefüllt, und es sieht wie folgt aus:

alt text

Meine Frage ist: Ist es möglich, den Zellstandort der Listenelemente im UniformGrid Objektbereich anzugeben? Ist es beispielsweise möglich, das markierte Element unter die Team 1 vs Team 5 zu platzieren, d. H. Es in die nächste Zelle auf der rechten Seite zu verschieben und die Leerstelle dort zu bewahren, wo sie sich gerade befindet? Es sollte wie folgt aussehen:

alt text

Gerade jetzt, ich bin ein Trick des Hinzufügens eines leeren Element in den SortedMatchesListBox.ItemsSource mit, um sie geschehen, aber was ich wirklich möchte in der Lage sein die angeben Position des Elements in der Elementanzeige. Danke für die Hilfe.

Antwort

1

Ja, ich denke, so könnte man es mit einem UniformGrid machen. Sie nimmt nur untergeordnete Elemente auf und fügt sie in die nächste verfügbare Position ein.

Wenn Sie genaue Zellenpositionen benötigen, verwenden Sie ein Raster mit einheitlichen Zeilen- und Spaltenbreiten, mit dem Sie genau angeben können, welche Zelle a Kindelement wird platziert.

+0

OK, um die Gleichmäßigkeit der Breite und Höhe von Zeilen und Spalten beizubehalten, sollte ich dieselben Werte für sie in den Zeilen- und Spaltendefinitionen im Rasterfeld festlegen. Auf diese Weise kann ich die genauen Positionen angeben und das Erscheinungsbild des UniformGrid-Layouts beibehalten. Süss – Boris

Verwandte Themen