2011-09-07 9 views
8

समस्या: ग्रिड के चारों ओर एक स्क्रॉलवियर जोड़ते समय ग्रिड स्केलिंग रद्द कर दी जाती है!मेरा स्क्रॉलव्यूयर मेरा ग्रिड लेआउट क्यों नष्ट कर देता है? डब्ल्यूपीएफ

एक्साम्पेल: मैंने ग्रिड चौड़ाई 3 कॉलम बनाए हैं, 1. कॉलमैन हमेशा स्तंभ 2 और 3 से 2 गुना बड़ा होना चाहिए! स्क्रॉल व्यूअर के बिना यह हमेशा सत्य होता है, लेकिन इसे जोड़ने पर यह प्रत्येक कॉलम को अपना आकार तय करने की अनुमति देता है।

<Window x:Class="alternatingGridRow.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="200" Width="Auto" Loaded="WindowLoaded"> 
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled"> 
    <Grid x:Name="LayoutRoot" ShowGridLines="True"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" MinHeight="23" MaxHeight="60"/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="2*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
     </Grid.ColumnDefinitions> 
      <TextBlock HorizontalAlignment="Stretch" Text="sdasdasdasdsadsadasddasdck" TextWrapping="Wrap" VerticalAlignment="Top" /> 
      <TextBlock Foreground="Red" Grid.Column="1" HorizontalAlignment="Stretch" Text="sdasdasdasdsadsadasddasdck" TextWrapping="Wrap" VerticalAlignment="Top" /> 
    </Grid> 
</ScrollViewer> 

आप स्पष्ट रूप से देख सकते हैं मापन कारकों की पूरी तरह से गलत कर रहे हैं! 2. कॉलम बड़े पैमाने पर है! और 3 स्तंभ कुछ यादृच्छिक आकार है ...

Wrong Scaling factors

इस पर कोई सलाह अच्छी तरह से प्राप्त किया जाता है .... चीयर्स मार्टिन

उत्तर

3

ठीक है, मैं आपका बिंदु देखता हूं कि कॉलम एक खराब क्यों होता है।
लेकिन .. मैं एक समाधान के बारे में सोचा के रूप में मैं अपनी पोस्ट को पढ़ें ...

के रूप में, मोहम्मद ने कहा, मेरी ग्रिड पर एक निश्चित चौड़ाई निर्धारित करते हैं, अच्छी तरह से .. मैं अपने ग्रिड ScrollViewer रूप में एक ही चौड़ाई करना चाहते हैं जब तक यह छोटे हो जाता है, तो मैं स्क्रॉलव्यूवर को प्रभावित करना चाहता हूं! तो .. मेरे समाधान है:

MinWidth="500" Width="{Binding ActualWidth, ElementName=scrollviewer}" 

<Window x:Class="alternatingGridRow.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="200" Width="Auto"> 
<ScrollViewer x:Name="scrollviewer" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled"> 
    <Grid x:Name="LayoutRoot" ShowGridLines="True" MinWidth="500" Width="{Binding ActualWidth, ElementName=scrollviewer}"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" MinHeight="23" MaxHeight="60"/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="2*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
     </Grid.ColumnDefinitions> 
      <TextBlock HorizontalAlignment="Stretch" Text="sdasdasdasdsadsadasddasdck" TextWrapping="Wrap" VerticalAlignment="Top" /> 
      <TextBlock Foreground="Red" Grid.Column="1" HorizontalAlignment="Stretch" Text="sdasdasdasdsadsadasddasdck" TextWrapping="Wrap" VerticalAlignment="Top" /> 
    </Grid> 
</ScrollViewer> 

</Window> 

(केवल क्षैतिज के लिए निर्धारित)

Thx।

+0

खुशी है कि आपको समाधान मिला, समाधान स्वीकार करना न भूलें;) –

5

मौजूदा सेटअप गलत है, क्योंकि ScrollViewer नहीं है अपने बच्चे की चौड़ाई और ऊंचाई (यानी असीमित) को सीमित करें, इसके अलावा, Grid हमेशा अपने मूल कंटेनर पर उपलब्ध सभी उपलब्ध क्षैतिज और लंबवत स्थान भरता है, और यही कारण है कि आप यह अजीब व्यवहार देखते हैं। आपको निम्नलिखित में से एक करना है:

  1. या तो, जैसा कि आपने उल्लेख किया है ScrollViewer हटा दें।
  2. या, अपने Grid के लिए एक निश्चित ऊंचाई और चौड़ाई निर्धारित करें।
5

आप प्रत्येक कॉलम में अनंत स्थान का प्रतिशत असाइन करने के लिए ग्रिड से पूछ रहे हैं। अनंत क्योंकि क्षैतिज स्क्रॉलिंग आपके स्क्रॉल व्यूअर पर सक्षम है, और स्क्रॉलव्यूर्स का पूरा बिंदु अंतरिक्ष वर्चुअलाइज करना है। तो आप इसे करने के लिए क्या कह रहे हैं यह भी समझ में नहीं आता है।

संबंधित मुद्दे