ListView размещен внутри UserControl, который в родительском XAML установлен на звездочку "*".
Я хочу использовать ListView с возможностью прокрутки элементов, когда есть элементы, которые превышают ListView. Должно работать для разных размеров окна.
Работает нормально, когда я устанавливаю Grid RowDefinitions с фиксированным целым числом, но когда я пытаюсь использовать звездочку, "*" ScrollViewer отключает.
Я также пытался связать и обновить высоту RowDefinition с помощью некоторого кода в переопределенном методе MeasureOverride, но он не сработал, как ожидалось.
Вот код внутри моего UserControl:
<Grid x:Name="ContentArea"
Background="{StaticResource MixerBackground}">
<Grid.RowDefinitions>
<RowDefinition Height="{x:Bind ListViewHeight}" />
</Grid.RowDefinitions>
<ListView
ItemsSource="{x:Bind ViewModel.Source,Mode=TwoWay}"
CanDragItems="True"
CanReorderItems="True"
AllowDrop="True"
SelectionMode="Single"
ScrollViewer.VerticalScrollBarVisibility="Visible">
<ListView.ItemTemplate>
<DataTemplate x:DataType="models:Track">
<Grid
Background="LightGray"
HorizontalAlignment="Left"
VerticalAlignment="Stretch"
BorderBrush="Black">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
</Grid.RowDefinitions>
<TextBlock
Text="{x:Bind Id}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
FontSize="24"
Margin="20,5,20,5"/>
<Grid
Background="Black"
Width="500"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Grid.Column="1">
</Grid>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Я ожидаю, что ScrollViewer будет работать правильно, но ListView останется на прежнем размере или полоса прокрутки отключена - в зависимости от значения высоты.
Есть ли способ добиться динамического изменения размера ListView с помощью прокрутки?
Редактировать
Вот код XAML родительской страницы, который загружается в Frame через каркас Light MVVM:
<Grid
x:Name="ContentArea">
<Grid
Background="{ThemeResource SystemControlPageBackgroundChromeLowBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="100" />
<RowDefinition Height="*" />
<RowDefinition Height="300" />
</Grid.RowDefinitions>
<maineditor:MainEditorMenuControl x:Name="ProjectMenu" />
<maineditor:MainEditorWorkspaceControl x:Name="Workspace" Grid.Row="1"/>
<maineditor:MainEditorMixerControl x:Name="Mixer" Grid.Row="2" />
</Grid>
</Grid>
Редактировать 2
Я думаю, что проблема может быть связана с шаблоном MVVM, который я создал с помощью плагина Windows Template Studio для Visual Studio. Если я пытаюсь воссоздать минимальное решение с нуля со всеми свойствами 1: 1, как в моем приложении, оно работает в новом проекте, но не в моем.