Ho una griglia con poche righe. Nella riga superiore, ho un ItemsControl che è associato dinamicamente a una raccolta e utilizza DataTemplateSelector e ItemsPanelTemplate (con un singolo WrapPanel disposto orizzontalmente). Ecco una versione ridotta di quello che ho finora:Lega l'altezza di una riga della griglia al suo contenuto in WPF
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40" />
<RowDefinition Height="2" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<GridSplitter Background="#666" Grid.Row="1" Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
<ItemsControl x:Name="items" Background="#DDD" Grid.Row="0" ItemTemplateSelector="{StaticResource itemTemplateSelector}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Grid>
Invece di impostare l'altezza che prima di fila a 40, mi piacerebbe impostare in modo dinamico in base all'altezza minima che l'ItemsControl deve essere per adattarsi tutto il suo contenuto. Poiché l'altezza di ItemsControl è vincolata dall'altezza della Grid Row, non riesco a capire quale elemento dovrei essere vincolante e a quale proprietà dell'elemento dovrei legarlo.
Avrebbe senso legare l'altezza della riga della griglia all'altezza desiderata di ItemsControl. Quindi, ho trovato la proprietà DesiredSize e ho associato l'altezza di RowDefinition a DesiredSize.He degli ItemsControl. Funziona quando viene caricato per la prima volta, ma non si aggiorna quando ridimensiono il controllo (ricorda che sto usando un WrapPanel come ItemsPanelTemplate, così come ridimensiono la finestra, l'altezza di ItemsControl dovrebbe cambiare).
Qualcuno sa se questo tipo di situazione è supportato anche dal framework di associazione o dovrei aggiungere il codice del gestore di eventi per realizzare questo?
Grazie.
Sì ... a volte la soluzione più semplice solo vi sfugge . Grazie – Rich