سؤال

وهذا السؤال هو نفس هذا الآخر <لأ href = "https://stackoverflow.com/questions/1381336/cant-get-wpf-listview-to-collapse-when-expanders-in-the-listview- انهيار "> دون إجابة السؤال .

وعندما <م> المتوسع يتم توسيع الخارجي <م> ListView ينمو لافساح المجال لمحتويات موسعات، ولكن عندما <م> المتوسع بعد ذلك انهار وجهة نظر لا تفرض ListView إلى تغيير.

وخفضت التعليمات البرمجية، مع ملاحظات بعد:

<!--<StackPanel>-->
<ItemsControl>

  <!-- ParameterGroupView -->
  <Border BorderBrush="Brown" BorderThickness="1" CornerRadius="4" Padding="4">
    <ListView HorizontalContentAlignment="Stretch">
      <Expander Header="Expander A" IsExpanded="False">
        <ListView HorizontalContentAlignment="Stretch">

          <!-- TextView -->
          <TextBlock >Content A</TextBlock>
          <TextBlock >Content B</TextBlock>

        </ListView>
      </Expander>

    </ListView>
  </Border>

</ItemsControl>
<!--</StackPanel>-->

ولدي <م> ParameterGroupView في ItemsControl أو <م> StackPanel لأن هناك الكثير في الواقع <م> ParameterGroupView الإدخالات. مبادلة ل<م> StackPanel لا يغير السلوك.

وإزالة <م> التلميذ لا يؤثر على السلوك، ولكن بعد ذلك يساعد على إظهار السلوك مع فقط واحدة <م> ParameterGroupView .

ويمكن أن يكون هناك العديد من المتوسع قسم الخارجي <م> ListView ، و <م> المتوسع يمكن أن يكون العديد من الكيانات داخل الداخلية <م> ListView .

ووالخارجي <م> ListView و <م> المتوسع هو لاستبدال <م> تريفيف ، الذي تم استخدامه لديك قائمة من العقد قابلة للطي، ولكن <م > تريفيف HorizontalContentAlignment = "تمدد"> الصفات.

وحتى إذا كان هناك طريقة أخرى للالتفاف / سلك كل هذا الأمر، سأكون سعيدا أيضا.

وهذه مشكلة لأن لدينا <م> TextView كتل كبيرة وهناك العديد <م> المتوسع ق.

وتحرير: <م> TextView يتم استخدام رمز هو ربط البيانات، وبالتالي وضع حيوي معا. لذلك فإن أي بديل للListView سوف تحتاج نوعا من ItemsSource

هل كانت مفيدة؟

المحلول

وجدت الحل، وتفاصيل مكان في السؤال بالفعل.

ItemControl يقبل <م> ItemsSource وتغيير حجم السيارات. حتى استبدال اثنين <م> ListView الصورة مع ItemControl الصورة يحصل على متداخلة الانهيار.

ولكن ليس هناك التمرير، لذلك التفاف الخارجي <م> ItemControl مع ScrollViewer ، يستنسخ النتيجة المرجوة كاملة.

<ScrollViewer
    VerticalScrollBarVisibility="Auto">
    <ItemsControl>
        <!-- ParameterGroupView -->
        <Border
            BorderBrush="Brown"
            BorderThickness="1"
            CornerRadius="4"
            Padding="4"
            Height="Auto">
            <ItemsControl
                HorizontalContentAlignment="Stretch">
                <Expander
                    Header="Expander A"
                    IsExpanded="False">
                    <ItemsControl
                        HorizontalContentAlignment="Stretch">
                        <!-- TextView -->
                        <TextBlock>Content A</TextBlock>
                        <TextBlock>Content B</TextBlock>
                    </ItemsControl>
                </Expander>
            </ItemsControl>
        </Border>
    </ItemsControl>
</ScrollViewer>

وكنت في اختبار مع موسعات مزدوجة في الحدود والأقسام الحدود مزدوجة.

نصائح أخرى

والشيء الأكثر وضوحا القيام به هنا هو وضع موسعات في حاوية أخرى من listview:

<Border BorderBrush="Brown" BorderThickness="1" CornerRadius="4" Padding="4">
    <StackPanel>

        <Expander Header="Expander A" IsExpanded="False">
            <ListView HorizontalContentAlignment="Stretch" MinWidth="100">
                <ListBox Name="listb"></ListBox>

                <!-- TextView -->
                <TextBlock >Content A</TextBlock>
                <TextBlock>Content B</TextBlock>

            </ListView>
        </Expander>
    </StackPanel>
</Border>

والحاوية تغيير حجم حول محتوى ما يرام.

إذا يجب أن يكون على الإطلاق في ListView (وهو أمر ممكن)، ثم أنا لا أعرف من وسيلة للحصول على ListView إلى تغيير حجم بسهولة بمجرد أن نما (بعد تحديد أحجام واضحة من كل شيء، وهو أخرق و غير مفيدة). إن الذي يكون الحالة فإنه من الممكن أن سيكون لديك لاستخدام مربع القائمة التحكم لعرض كل موسعات مفتوحة، أو عرض المحتوى بطريقة مختلفة (كما هو الحال في منبثقة، ربما؟) إذا كنت تريد أن تكون قادرة على رؤيته في كل لمحة.

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