यदि आप अपने ग्रुपबॉक्स (जो, जहां तक मैं समझता हूं, वह है जो आप करना चाहते हैं) से ऊंचाई हटाते हैं, तो यह उसके कंटेनर को भर देगा, जब तक कोई पैनल अपस्ट्रीम न हो जो अपने आकार के नियम लगाए।
मैं अपने XAML के इस सरलीकृत संस्करण का इस्तेमाल किया। इस टेम्पलेट को अकेले बनाने के लिए मैंने टेम्पलेट और बाइंडिंग को हटा दिया, और कड़ी-कोड की कुछ वस्तुओं को हटा दिया; वे परिवर्तन लेआउट के तरीके को प्रभावित नहीं करेंगे।
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<GroupBox FontWeight="Bold" Header="Tables" Padding="2">
<ScrollViewer>
<ItemsControl FontWeight="Normal">
<TextBlock>Foo</TextBlock>
<TextBlock>Bar</TextBlock>
<TextBlock>Baz</TextBlock>
</ItemsControl>
</ScrollViewer>
</GroupBox>
</Window>
भागो यह, और आप उस सामग्री वास्तव में खिड़की फिट करने के लिए आकार करता देखेंगे, और स्क्रॉलबार केवल जब खिड़की भी सभी तीन आइटम देखने के लिए छोटा सा हो जाता है सक्षम बनाता है। मुझे विश्वास है कि यह वही है जो आप चाहते हैं।
तो समस्या सबसे अधिक संभावना माता पिता पैनल में से एक, एक आप अपने नमूना XAML में दिखाई नहीं दे रहे हैं।
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<StackPanel>
<GroupBox FontWeight="Bold" Header="Tables" Padding="2">
<ScrollViewer>
<ItemsControl FontWeight="Normal">
<TextBlock>Foo</TextBlock>
<TextBlock>Bar</TextBlock>
<TextBlock>Baz</TextBlock>
</ItemsControl>
</ScrollViewer>
</GroupBox>
</StackPanel>
</Window>
अब GroupBox विंडो के ऊपरी भाग, वास्तव में इसकी सामग्री फिट करने के लिए आकार में दिखाई देता है: अपने GroupBox एक StackPanel अंदर प्रदर्शित होता है या समस्या आप का वर्णन हो सकता है। यदि आप खिड़की को पर्याप्त रूप से छोटा करते हैं, तो ग्रुपबॉक्स काट दिया जाएगा - क्योंकि इसका आकार इसके कंटेनर में फिट नहीं है। यह आपके द्वारा वर्णित समस्या की तरह लगता है।
कारण यह है कि StackPanel अपने बच्चों क्या उनके आदर्श ऊंचाई (उनकी सामग्री के आधार पर) है पूछता है, और कहा कि ऊंचाई का उपयोग करता है। StackPanel (या कुछ इसी तरह) के बिना, डिफ़ॉल्ट नियंत्रण के VerticalAlignment सम्मान करने के लिए है, और है कि अगर खिंचाव के डिफ़ॉल्ट मान पर सेट है, तो नियंत्रण अपनी मूल को भरने के लिए बढ़ाया गया है। इसका मतलब है कि यह अपने माता-पिता से लंबा नहीं होगा, जो आप चाहते हैं की तरह लगता है।
समाधान: स्टैकपैनल को हटाएं (या जो भी आपको समस्याएं पैदा कर रहा है) और कुछ और उपयोग करें। जो आप पूरा करने की कोशिश कर रहे हैं उसके आधार पर, आपको डॉकपैनल या ग्रिड के साथ बेहतर भाग्य हो सकता है। अपने लेआउट के बारे में और जानने के बिना बताना मुश्किल है।
संपादित करें: ठीक है, ऐसा लगता है कि समस्या वास्तव में HeaderedContentControl
माता-पिता है - लेकिन सीधे नहीं। HeaderedContentControl एक पैनल नहीं है, इसलिए यह अपने स्वयं के किसी भी लेआउट नहीं करता है (और इसके वंशज, ग्रुपबॉक्स में, यह वही समस्या नहीं है)। समस्या इसका डिफ़ॉल्ट टेम्पलेट है - जिसमें एक स्टैकपैनल शामिल है। अच्छी खबर यह है कि आप एक अलग टेम्पलेट का उपयोग करने के लिए स्वतंत्र हैं, के बजाय एक DockPanel के साथ एक कहना है:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<HeaderedContentControl>
<HeaderedContentControl.Style>
<Style TargetType="{x:Type HeaderedContentControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type HeaderedContentControl}">
<DockPanel>
<ContentPresenter ContentSource="Header" DockPanel.Dock="Top"/>
<ContentPresenter/>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</HeaderedContentControl.Style>
<GroupBox FontWeight="Bold" Header="Tables" Padding="2">
<ScrollViewer>
<ItemsControl FontWeight="Normal">
<TextBlock>Foo</TextBlock>
<TextBlock>Bar</TextBlock>
<TextBlock>Baz</TextBlock>
</ItemsControl>
</ScrollViewer>
</GroupBox>
</HeaderedContentControl>
</Window>
आप <HeaderedContentControl.Style>
हिस्सा छोड़ देते हैं तो आपकी समस्या reproduces; लेकिन शैली के साथ, यह ग्रुपबॉक्स को अपने कंटेनर को भरने की इजाजत देता है, इसलिए जब आप इसे चाहते हैं तो स्क्रॉलव्यूयर को स्क्रॉलबार मिलेगा।
ग्रिड का विस्तार इस बात पर निर्भर करता है कि इसमें क्या शामिल है। सटीक उत्तर प्राप्त करने के लिए आपको अपने XAML को अधिक दिखाने की आवश्यकता है। –
मैंने अतिरिक्त कोड जोड़ा (हालांकि फॉर्मेटिंग अजीब आया) –