2011-01-11 21 views
34

आकार मैं एक उपयोगकर्ता नियंत्रण है, यह UserControl, निम्न कॉलम परिभाषा के साथ एक ग्रिड है कि फोन:ग्रिड के SharedSizeGroup और *

<Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto" SharedSizeGroup="A"/> 
      <ColumnDefinition Width="Auto" SharedSizeGroup="B"/> 
      <ColumnDefinition Width="*" SharedSizeGroup="C"/> 
      <ColumnDefinition Width="Auto" SharedSizeGroup="D"/> 
      <ColumnDefinition MinWidth="30" Width="*" SharedSizeGroup="E"/> 
      <ColumnDefinition MinWidth="30" Width="*" SharedSizeGroup="F"/> 
      <ColumnDefinition Width="110" SharedSizeGroup="G"/> 
      <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="H"/> 
      <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="I"/> 
      <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="J"/> 
      <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="K"/> 
      <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="L"/> 
</Grid.ColumnDefinitions> 

मैं भी MainWindow, निम्नलिखित संपत्ति के साथ जो एक ग्रिड में ही होता है, है ग्रिड पर परिभाषित:

Grid.IsSharedSizeScope="True" 

अब, मैं MainWindow में ग्रिड (एक अलग पंक्ति के लिए प्रत्येक) को UserControls की एक जोड़ी गयी। मेरा लक्ष्य सिंक में रहने के लिए अलग-अलग UserControls की कॉलम चौड़ाई में से प्रत्येक होना है। एक चीज़ को छोड़कर SharedSizeGroup का उपयोग करते समय सबकुछ ठीक काम करता है। ऐसा लगता है कि * की चौड़ाई वाले किसी भी कॉलम के रूप में व्यवहार नहीं करना चाहिए। ऐसा लगता है कि * कॉलम चौड़ाई सेट की गई है जैसे कि वे ऑटो थे।

क्या साझा आकार समूह और * आकार के साथ कोई सीमाएं/समस्याएं हैं? यह कॉलम चौड़ाई को सिंक में रखने का सबसे अच्छा तरीका प्रतीत होता है लेकिन मुझे यह ठीक नहीं लग रहा है।

धन्यवाद।

उत्तर

46

MSDN:

स्तंभों और पंक्तियों कि आकार के बंटवारे में भाग लेने का सम्मान नहीं करते स्टार आकार। आकार के बंटवारे परिदृश्य में, स्टार आकार ऑटो के रूप में व्यवहार किया जाता है

आप स्टार का उपयोग करते हैं तो सभी कॉलम, एक ही चौड़ाई होगा ताकि आप सभी यदि आप ऑटो कोई आपत्ति नहीं है के लिए एक ही SharedSizeGroup आवंटित करने चाहिए आकार देने वाला पहलू:

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="Auto" SharedSizeGroup="A"/> 
    <ColumnDefinition Width="Auto" SharedSizeGroup="B"/> 
    <ColumnDefinition Width="*" SharedSizeGroup="StarDontWork"/> 
    <ColumnDefinition Width="Auto" SharedSizeGroup="D"/> 
    <ColumnDefinition MinWidth="30" Width="*" SharedSizeGroup="StarDontWork"/> 
    <ColumnDefinition MinWidth="30" Width="*" SharedSizeGroup="StarDontWork"/> 
    <ColumnDefinition Width="110" SharedSizeGroup="G"/> 
    <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="H"/> 
    <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="I"/> 
    <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="J"/> 
    <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="K"/> 
    <ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="L"/> 
</Grid.ColumnDefinitions> 

(इस व्यवहार से यह भी इस प्रकार है कि आप Width संपत्ति जब SharedSizeGroup सेट किया गया है ड्रॉप कर सकते हैं)


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

एक साधारण उदाहरण:

<Grid.ColumnDefinitions> 
    <ColumnDefinition SharedSizeGroup="A"/> 
    <ColumnDefinition SharedSizeGroup="B" Width="*"/> 
    <ColumnDefinition SharedSizeGroup="C"/> 
</Grid.ColumnDefinitions> 

के रूप में समझाया Width="*" कुछ नहीं करेंगे, लेकिन जैसा कि कॉलम 0 और 2 synched कर रहे हैं, स्तंभ 1 रूप में अच्छी तरह synched किया जाना है, ताकि आप केवल SharedSizeGroup ड्रॉप कर सकते हैं हैं:

<Grid.ColumnDefinitions> 
    <ColumnDefinition SharedSizeGroup="A"/> 
    <ColumnDefinition Width="*"/> 
    <ColumnDefinition SharedSizeGroup="C"/> 
</Grid.ColumnDefinitions> 
+0

लिंक के लिए धन्यवाद। दुर्भाग्यवश, एक अलग साझाकरण समूह का उपयोग करने के लिए * कॉलम सेट करने से उन सभी कॉलमों की चौड़ाई सिंक हो जाएगी (जो अपेक्षित है) लेकिन जो मैं ढूंढ रहा हूं वह नहीं। मुझे व्यक्तिगत रूप से समन्वयित करने के लिए प्रत्येक कॉलम चौड़ाई की आवश्यकता है। – Flack

+0

मैंने जो प्रस्तावित किया है वह है * वास्तव में स्टार क्या करेगा *, मुझे वह नहीं मिलता है जो आप चाहते हैं ... –

+2

इस से सावधान रहें। मेरा ऐप, इस वजह से कुछ भी सीपीयू कोर का 100% उपभोग नहीं किया। जैसे ही मैंने "साझा आकार समूह" को हटा दिया, वैसे ही यह 0 की अपेक्षा करता है। – AlexeiOst

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