WPF: كيفية تجميد صف رأس ListView حتى لا يتم التمرير من الشاشة

StackOverflow https://stackoverflow.com/questions/659512

سؤال

أنا جديد على تطوير 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, ، لذلك سأرى ما يحدث وأذهب من هناك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top