У меня есть WPF ListView внутри StackPanel, с высотой = "Авто". Хорошо, что он делает то, что хотел - изменяет высоту в соответствии со всеми элементами, содержащимися в ListView. В моем ListView также есть HorizontalScrollBarVisiblity = "Auto", что соответствует моим потребностям.
Проблема возникает, когда вся ширина столбцов моего ListView превышает ширину элемента управления ListView (то есть пользователь уменьшает ширину окна и этого элемента управления). В этом случае, очевидно, появляется горизонтальная полоса прокрутки - это нормально. Проблема в том, что эта полоса прокрутки закрывает последний (нижний) элемент элементов ListView, поэтому он частично не виден.
Вертикальная полоса прокрутки не появляется, и это нормально - я не хочу этого. Я просто хочу, чтобы высота моего ListView была правильно рассчитана, поэтому он учитывает высоту показанной горизонтальной полосы прокрутки и включает ее в расчет, чтобы все элементы были видны целиком.
Пример кода Xaml:
<ListView Name="lvProcedures" ItemsSource="{Binding Path=Procedures}" SelectionMode="Single">
<ListView.View>
<GridView AllowsColumnReorder="False" ColumnHeaderToolTip="Lista zabiegów">
<GridViewColumn DisplayMemberBinding="{Binding Path=procedure}" Header="A" Width="150" />
<GridViewColumn DisplayMemberBinding="{Binding Path=location}" Header="B" Width="100" />
<GridViewColumn DisplayMemberBinding="{Binding Path=material}" Header="C" Width="180" />
<GridViewColumn DisplayMemberBinding="{Binding Path=other}" Header="D" Width="180" />
<GridViewColumn DisplayMemberBinding="{Binding Path=description}" Header="E" Width="400" />
</GridView>
</ListView.View>
</ListView>
Я теперь завис на идее создания пользовательского элемента управления (может быть, только класса ListView, зарезервированного ??), который переопределяет MeasureOverride, но я не думаю, что это хороший способ решить такую маленькую, но насмешивающуюся "ошибку" Мне трудно реализовать решение.
Может кто-нибудь предложить какое-нибудь элегантное решение этой проблемы?
Любая идея будет оценена.