У меня есть WPF ListView
, который должен быть расширен с помощью всегда видимого нижнего колонтитула.Нижний колонтитул должен вести себя как заголовок и не должен быть прокручен.Следующий XAML использует внешний ScrollViewer
, связанный с кодом позади, для управления ScrollViewer ListView:
<Window x:Class="LayoutTests.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="125" Width="176">
<Grid>
<StackPanel>
<ListView Name="L" ScrollViewer.HorizontalScrollBarVisibility="Hidden">
<ListViewItem Content="Brown brownie with a preference for white wheat."/>
<ListViewItem Content="Red Redish with a taste for oliv olives."/>
</ListView>
<ScrollViewer CanContentScroll="False" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" ScrollChanged="ScrollViewer_ScrollChanged">
<!-- Would like to bind Rectangle.Width to the preferred width of L -->
<Rectangle Height="20" Width="500" Fill="Red"/>
</ScrollViewer>
</StackPanel>
</Grid>
</Window>
В коде позади это выглядит так:* определяется следующим образом (но неважно):
public static DependencyObject GetScrollViewer(DependencyObject depObj)
{
if (depObj is ScrollViewer)
{ return depObj; }
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
var child = VisualTreeHelper.GetChild(depObj, i);
var result = GetScrollViewer(child);
if (result == null) { continue; }
else { return result; }
}
return null;
}
ScrollViewer
из ListView
, очевидно, знает о предпочтительной ширине его дочерних элементов.Проблема в том, что я не могу найти способ привязки к этой ширине.Итак, вот оно:
Как связать Rectangle.Width
с предпочтительным размером ListView
?
Или, альтернативно, как включить нижний колонтитул в ListView
всегда виден?