ListView مع المتوسع متداخلة لا تنهار
سؤال
وهذا السؤال هو نفس هذا الآخر <لأ 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 م> و <م> المتوسع م> هو لاستبدال <م> تريفيف م>، الذي تم استخدامه لديك قائمة من العقد قابلة للطي، ولكن <م > تريفيف م الصورة الداخلية استخدام الشبكات، يعني تم ممرود البنود TextView horizonatlly، وهو نفس إذا قمت بإزالة الأثير <م> 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 إلى تغيير حجم بسهولة بمجرد أن نما (بعد تحديد أحجام واضحة من كل شيء، وهو أخرق و غير مفيدة). إن الذي يكون الحالة فإنه من الممكن أن سيكون لديك لاستخدام مربع القائمة التحكم لعرض كل موسعات مفتوحة، أو عرض المحتوى بطريقة مختلفة (كما هو الحال في منبثقة، ربما؟) إذا كنت تريد أن تكون قادرة على رؤيته في كل لمحة.