WPF: كيفية تجميد صف رأس ListView حتى لا يتم التمرير من الشاشة
-
20-08-2019 - |
سؤال
أنا جديد على تطوير WPF ، ولدي عرض ListView وأريد تجميد صف الرأس حتى لا يتم التمرير من الشاشة عندما يقوم المستخدم بتمرير القائمة. رمز XAML ، ورثته ، يبدو شيئًا كهذا:
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<DockPanel>
<forms:BindableGrid DockPanel.Dock="Top" [code snipped] >
<ListView.View>
<GridView>
<GridViewColumn Header="ColA" DisplayMemberBinding="{Binding ColA}" />
<GridViewColumn Header="ColB" DisplayMemberBinding="{Binding ColB}" />
[etc]
المحلول
ال ListView
بالفعل هذا - إنه يحتوي على داخلي ScrollViewer
هذا فقط يقوم بتمرير العناصر وليس الرأس.
المشكلة هي أن خارجيتك ScrollViewer
يخبر طفلها ( DockPanel
) أنه يحتوي على مساحة لا نهائية متوفرة ، و DockPanel
يخبر هذا لأطفالها ، لذلك الخاص بك ListView
ينتهي الأمر بتولي مساحة أكبر قدر من المساحة التي تحتاج إلى عرض جميع العناصر والداخلية ScrollViewer
لا تظهر.
إذا أخذت خارجك الخارجي ScrollViewer
, ، ال ListView
يجب أن تلتقط أنه يحتوي على مساحة محدودة ، والداخلية ScrollViewer
سيظهر.
من الواضح أن هذا سيؤثر على بقية الأشياء في DockPanel
, ، لذلك سأرى ما يحدث وأذهب من هناك.