In einem WPF-Projekt habe ich eine Grid
definiert mit zwei Reihen mit jeweils einem ListBox
enthält. Die RowDefinition
s haben ihre Height = '*'
so gleich viel Raum für jeden ListBox
zugeordnet ist. Was ich möchte, aber passieren, ist, dass, wenn entweder ListBox
nicht vollständig ist ganz eigenen Platz benötigen (durch die Elemente zur Laufzeit entfernt wird), dann, dass ‚Reserve‘ Raum ist mit dem anderen ListBox
übergeben.WPF Grid Layout-Abfrage
Also, mit dem Code, den ich unten Liste, die beide ListBox
‚s mit dem gleichen Raum beginnen, die richtige ist. Durch Drücken der Taste werden einige Einträge aus der obersten ListBox
(topList) gelöscht, was zu Leerraum unter den verbleibenden 2 Einträgen führt. Es ist dieser Raum, den ich am unteren ListBox
gewährt werden möchte. Und umgekehrt. Hoffe, das macht Sinn.
Kann mir jemand helfen mit, wie ich das erreichen könnte?
Vielen Dank im Voraus für jede Hilfe.
XAML:
<Window x:Class="FiftyPercentSplit.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:FiftyPercentSplit"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid Height="200">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button x:Name="btnDeleteFromTopList" Click="btnDeleteFromTopList_Click" Content="Delete from Top List"/>
<ListBox x:Name="topList" Grid.Row="1">
<ListBoxItem>1</ListBoxItem>
<ListBoxItem>2</ListBoxItem>
<ListBoxItem>3</ListBoxItem>
<ListBoxItem>4</ListBoxItem>
<ListBoxItem>5</ListBoxItem>
<ListBoxItem>6</ListBoxItem>
<ListBoxItem>7</ListBoxItem>
<ListBoxItem>8</ListBoxItem>
<ListBoxItem>9</ListBoxItem>
</ListBox>
<ListBox x:Name="bottomList" Grid.Row="2">
<ListBoxItem>1</ListBoxItem>
<ListBoxItem>2</ListBoxItem>
<ListBoxItem>3</ListBoxItem>
<ListBoxItem>4</ListBoxItem>
<ListBoxItem>5</ListBoxItem>
<ListBoxItem>6</ListBoxItem>
<ListBoxItem>7</ListBoxItem>
<ListBoxItem>8</ListBoxItem>
<ListBoxItem>9</ListBoxItem>
</ListBox>
</Grid>
Code hinter:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void btnDeleteFromTopList_Click(object sender, RoutedEventArgs e)
{
for (int i = 0; i < 7; i++)
{
topList.Items.RemoveAt(0);
}
}
}
Antwort zu vermeiden und wenn Sie anschließend Elemente aus der unteren Liste entfernen, sollte alles zufällt zurück zu gleichen Größen? Das ist kaum möglich ohne einen Code hinter Magie. – Clemens
@Cleve, hast du den Ansatz versucht, den ich in meiner Antwort vorgeschlagen habe? Funktioniert es für Sie? – ASh
Hi @ASh, es tut mir leid, dass ich nicht früher geantwortet habe. Ja, ich habe es versucht und es hat super funktioniert. Mir hat der 'Meurer' Trick wirklich gefallen. Vielen Dank! – Cleve