2 Stimmen

ListBoxDragDropTarget verhindert, dass die ListBox ihr übergeordnetes Steuerelement ausfüllt

Mit dem Silverlight Toolkit ist es extrem einfach, einfache Drag-and-Drop-Funktionen zu aktivieren.

http://silverlightfeeds.com/post/1325/Silverlight_Toolkit_adds_DragDrop_targets.aspx

Leider scheint es, dass der Wrapper ListBoxDragDropTarget bringt das normale Standardverhalten einer ListBox durcheinander, das darin besteht, sich auf das übergeordnete Steuerelement auszudehnen - wie in diesem Beispiel eine Gitterzelle.

<Grid Background="Yellow">

 <toolKit:ListBoxDragDropTarget AllowDrop="True">
      <ListBox x:Name="customerListBoxMain" 
               DisplayMemberPath="Name">
        <ListBox.ItemsPanel>
          <ItemsPanelTemplate>
            <StackPanel Orientation="Vertical"/>
          </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
      </ListBox>
    </toolKit:ListBoxDragDropTarget>

</Grid>

Ich lande hier (nach dem Binden von Daten an die ListBox ) mit einer kleinen Listbox, deren Größe an den Inhalt angepasst ist und die in der Mitte einer gelben Box sitzt.

Keine noch so große Menge an HorizontalAlignment=Stretch usw. scheint es möglich zu sein, das übergeordnete Feld zu füllen.

Wie kann ich die ListBox zum Füllen des Grid ?

6voto

ListBoxDragDropTarget ist von der Inhaltssteuerung abgeleitet. Setzen Sie einfach HorizontalContentAlignment und VerticalContentAlignment.

.....

0 Stimmen

Bei mir hat das tatsächlich funktioniert! Stellen Sie sicher, dass Sie Width/Height auf der ListBox nicht festlegen und setzen Sie Vertical/HorizontalContentAlignment auf Stretch.

0 Stimmen

Ich bin gerade über diesen Beitrag gestolpert, und diese Lösung hat auch bei mir funktioniert.

0voto

Simon_Weaver Punkte 129442

Das Beste, was ich bis jetzt habe, ist, auf die Änderung der Größe des Wrapper-Gitters zu warten und die Größe manuell zu aktualisieren. (Ich konnte nicht bekommen, diese Arbeit in XAML, so hatte das Ereignis zu verwenden).

<Grid Name="myListBoxWrapper" SizeChanged="myListBoxWrapper_SizeChanged">               
  <controlsToolkit:ListBoxDragDropTarget AllowDrop="True">                  
    <ListBox x:Name="myListBox" >

und in Code-Behind:

private void myListBoxWrapper_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        myListBox.Width = myListBoxWrapper.ActualWidth;
        myListBox.Height = myListBoxWrapper.ActualHeight;
    }

0 Stimmen

Es hat sich herausgestellt, dass die Ziehfunktionalität derzeit nicht stabil genug für mich ist und ich sowieso mit allen Arten von Seltsamkeiten konfrontiert wurde.

0voto

infografnet Punkte 3431

Wie Archil sagte, die Einstellung HorizontalContentAlignment y VerticalContentAlignment ist der richtige Weg, aber eine andere Möglichkeit wäre wahrscheinlich, die Width y Height de ListBox a ActualWidth y ActualHeight de ListBoxDragDropTarget :

<toolkit:ListBoxDragDropTarget x:Name="dragdroptarget" AllowDrop="True">
    <ListBox x:Name="customerListBoxMain" 
        DisplayMemberPath="Name" 
            Width="{Binding ElementName=dragdroptarget, Path=ActualWidth}" 
            Height="{Binding ElementName=dragdroptarget, Path=ActualHeight}" >
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Vertical"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
    </ListBox>
</toolkit:ListBoxDragDropTarget>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X