मेरे पास एक WPF एप्लिकेशन है जिसे उत्तरदायी होने की आवश्यकता है। मैं Grid
के अंदर क्या चाहता हूं। जब विंडो स्केल हो जाती है, तो मुझे Grid
पहले आकार बदलने के लिए, और फिर DataGrid
चाहिए। यहाँ मैं अब तक क्या हासिल है:स्केलिंग ऑर्डर बदलें WPF
शीर्ष पर gif आप देख सकते हैं कि Grid
पहले आकार बदलता है, और जब यह तक पहुँच जाता है यह कम से कम स्केलिंग आकार है, यह नीचे DataGrid
से अधिक हो जाता है। बिल्कुल वही नहीं जो मैं चाहता हूं क्योंकि मैं पहले लेआउट को स्केल करना चाहता हूं, फिर लेआउट के बजाय DataGrid
में स्क्रॉलबार दिखाएं।
ठीक है यहाँ आप देख सकते हैं कि यह स्क्रॉलबार से पता चलता है कि मैं चाहता हूँ: तो मैं निम्नलिखित की कोशिश की। केवल एक चीज यह है कि यह पहले डेटाग्रिड का आकार बदलता है, और जब यह डेटाग्रिड का आकार बदलता है, तो यह ग्रिड का आकार बदलना शुरू कर देता है। मैं इसे दूसरी तरफ देखना चाहता हूं, पहले ग्रिड का आकार बदलें, फिर डेटाग्रिड का आकार बदलें और स्क्रॉलबार दिखाएं। इसलिए मूल रूप से मैं एक समाधान की तलाश कर रहा हूं जो निम्न कार्य करता है:
- ग्रिड को स्केल करने वाली विंडो स्केल करें।
- ग्रिड को न्यूनतम आकार
- जब यह न्यूनतम आकार तक पहुंच गया है और यह अभी भी छोटा हो रहा है, तो डेटाग्रिड में स्क्रॉलबार दिखाएं।
ताकि नीचे पहले Gif से यह सवाल से डेटा ग्रिड
में स्क्रॉलबार के बाद आता है,? वहाँ यह करने के लिए कोई तरीका है ऐसा लगता है कि मैं बहुत करीब हूं क्योंकि यह उन दो चीजों का संयोजन है लेकिन मुझे नहीं पता कि कैसे। यहां मेरा कोड है:
<Grid Grid.Row="1" HorizontalAlignment="Right" Grid.Column="0">
<Grid ShowGridLines="False">
<Grid.RowDefinitions>
<RowDefinition MaxHeight="50"/>
<RowDefinition Height="auto"/>
<RowDefinition MaxHeight="20"/>
<RowDefinition Height="auto"/>
<RowDefinition MaxHeight="5"/>
<RowDefinition Height="auto"/>
<RowDefinition MaxHeight="5"/>
<RowDefinition Height="auto"/>
<RowDefinition MaxHeight="5"/>
<RowDefinition Height="auto"/>
<RowDefinition MaxHeight="50"/>
<RowDefinition Height="auto"/>
<RowDefinition MaxHeight="50"/>
<RowDefinition Height="auto"/>
<RowDefinition MaxHeight="5"/>
<RowDefinition Name="DataGridRow" Height="*" MaxHeight="240" />
</Grid.RowDefinitions>
<Label Grid.Row="1" FontSize="24">Test</Label>
<Label Grid.Row="3" Content="Test"/>
<ComboBox Grid.Row="5" MaxWidth="500" MinWidth="300" HorizontalAlignment="Left" />
<Label Grid.Row="7" Content="Test"/>
<ComboBox Grid.Row="9" MaxWidth="500" MinWidth="300" HorizontalAlignment="Left"/>
<Separator Grid.Row="11"/>
<Label Grid.Row="13" Content="Test" />
<Grid Grid.Row="15">
<DataGrid
RowHeight="40"
CanUserAddRows="False"
x:Name="dataGrid"
AutoGenerateColumns="False"
CanUserResizeColumns="True"
HeadersVisibility="None"
GridLinesVisibility="None"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Visible"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
<DataGrid.Columns>
<DataGridTextColumn IsReadOnly="True" Width="*" Binding="{Binding Name}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Margin" Value="2,0,0,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Grid>
</Grid>
मुझे लगता है कि 'पंक्ति परिभाषा' 'ऊंचाई 'डिफ़ॉल्ट रूप से' ऑटो 'पर डिफ़ॉल्ट है, इसलिए आपकी दोनों पंक्ति परिभाषाओं' हाइट्स 'को' ऑटो 'के रूप में सेट किया गया है। अपने 'DataGridRow'' RowDefinition' पर 'ऊंचाई =" * "' 'का उपयोग करने का प्रयास करें। – Jose
@Kirenenko अगर मैंने अपनी पंक्ति परिभाषा में 'ऊंचाई =" * "' और 'maxheight =" 240 "सेट किया है, तो मुझे वही परिणाम मिलता है जैसे पहले gif – Markinson