2014-07-23 7 views
7

मैं मिश्रण अभिव्यक्ति का उपयोग कर रहा हूं और बस WPF के साथ शुरू किया।एक WPF विंडो उत्तरदायी बनाने के लिए कैसे करें

मैं एक विंडो उत्तरदायी विंडो बनाने की कोशिश कर रहा हूं जो एकाधिक ग्रिड को समायोजित कर सकता है और विंडो आकार के अनुसार न्यूनतम चौड़ाई तक आकार में बदल जाएगा।

यह उन सभी लोगों की तरह:

enter image description here

मेरे कोड अब तक:

<Window x:Class="Blend.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" WindowState="Maximized"> 
<Grid> 
<Border CornerRadius="5" BorderBrush="RoyalBlue" BorderThickness="1" 
       Padding="5" HorizontalAlignment="Left" Margin="20,10,0,0" 
       VerticalAlignment="Top" Height="211.5" Width="484.5"> 
<Grid Background="#FFEDF3F8"> 

</Grid> 
</Border> 
<Border CornerRadius="5" BorderBrush="RoyalBlue" BorderThickness="1" 
    Padding="5" Margin="523.333,10,16.334,283.5"> 
    <Grid Background="#FFEDF3F8"/> 
</Border> 
<Border CornerRadius="5" BorderBrush="RoyalBlue" BorderThickness="1" 
    Padding="5" Margin="21.333,234,16.334,144"> 
    <Grid Background="#FFEDF3F8"/> 
</Border> 
<Border CornerRadius="5" BorderBrush="RoyalBlue" BorderThickness="1" 
    Padding="5" Margin="21.333,372,16.334,31.5"> 
    <Grid Background="#FFEDF3F8"/> 
</Border> 
<Button Content="Button" HorizontalAlignment="Left" Margin="626.833,478.5,0,0" 
VerticalAlignment="Top" Width="49" Background="#FF00458C"/> 
<Button Content="Button" HorizontalAlignment="Left" Margin="693.166,478.5,0,0" 
VerticalAlignment="Top" Width="49" Background="#FF00458C"/> 
</Grid> 
</Window> 

2 बातें की कोशिश की है यहाँ एक Margin है और अन्य Width और Height साथ 'संरेखण' का उपयोग किया जाता है ।

सुनिश्चित नहीं है कि मेरे उद्देश्य को कौन सा हल करेगा और दूसरा यह स्क्रीन आकार का जवाब देगा या नहीं।

मैं * का उपयोग कर गतिशील ग्रिड के बारे में पढ़ें * लेकिन ऐसा लगता है कि यह यहां काम नहीं करता है।

धन्यवाद,

+0

आपको अपने ग्रिड के कॉलम और पंक्तियों को परिभाषित करना चाहिए। क्या आपने [ऑनलाइन दस्तावेज] पढ़ा है (http://msdn.microsoft.com/en-us/library/system.windows.controls.grid.aspx)? एक उदाहरण है – Clemens

+0

लेकिन क्या होगा यदि मैं ऐसा नहीं करना चाहता हूं तो बस पूरे ग्रिड को परिभाषित करें? हां @ क्लेमेन, मैंने इसे चेक किया था। –

+0

@ क्लेमेंस जैसा कि आप देख सकते हैं कि मैं प्रत्येक ग्रिड के अंदर एक सीमा शामिल कर रहा हूं और फिर चौड़ाई/ऊंचाई को उस सीमा पर सेट करने की कोशिश कर रहा हूं और ग्रिड ठीक से नहीं देख रहे हैं। –

उत्तर

13

आप सही रास्ते में ग्रिड का उपयोग नहीं कर रहे हैं।

डब्ल्यूपीएफ ग्रिड की एक संपत्ति है जो कॉलम और पंक्तियों को सेट करने की अनुमति देती है। फिर, आप ग्रिड के अंदर तत्व डाल देंगे और सेट करेंगे कि किस पंक्ति/कॉलम में उन्हें जाना चाहिए।

बेशक आप ग्रिड के अंदर ग्रिड प्राप्त कर सकते हैं और इसी तरह।

तब आप चौड़ाई = "2 *" के साथ खेल सकते हैं और ऐसी चीजें कॉलम को बड़े या छोटे से "उत्तरदायी" बनाने के लिए कर सकते हैं।

नीचे दिए गए कोड को आपको प्राप्त करने का प्रयास करने के लिए कुछ "समान" देना चाहिए।

<Grid> 

    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="2*" /> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 

    <Grid.RowDefinitions> 
     <RowDefinition /> 
     <RowDefinition /> 
     <RowDefinition /> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 

    <Grid Grid.Row="0" 
      Grid.Column="0" 
      Background="Red" /> 

    <Grid Grid.Row="0" 
      Grid.Column="1" 
      Background="Blue" /> 

    <Grid Grid.Row="1" 
      Grid.Column="0" 
      Grid.ColumnSpan="2" 
      Background="Violet" /> 

    <Grid Grid.Row="2" 
      Grid.Column="0" 
      Grid.ColumnSpan="2" 
      Background="Green" /> 

    <StackPanel Grid.Row="3" 
       Grid.ColumnSpan="2" 
       Orientation="Horizontal"> 
     <Button>OK</Button> 
     <Button>Cancel</Button> 
    </StackPanel> 
</Grid> 

आप के साथ "*" और चौड़ाई और स्तंभ और पंक्तियों की ऊंचाई के लिए "स्वचालित" खेल सकते हैं, "*" हमेशा एक वर्तमान विंडो 'चौड़ाई या ऊंचाई के "प्रतिशत" के रूप में परिभाषित किया गया है। यदि आपके पास "*" के साथ एक कॉलम है और दूसरा "2 *" है, तो "2 *" वाला एक व्यक्ति केवल "*" वाला एक बड़ा होगा, जो 2/3 1/3 पृथक्करण करेगा।

"ऑटो" का अर्थ है कि यह "छोटी चौड़ाई या ऊंचाई" कॉलम के अंदर दिखाने की अनुमति देगा "।

+0

क्या यह भी उत्तरदायी होगा? –

+0

यदि उत्तरदायी से आपका मतलब है कि यह विंडो के आकार के आधार पर फिर से व्यवस्थित होगा, तो हाँ यह होगा। यह ग्रिड के साथ इस व्यवहार को करने का सही तरीका है। – Gimly

+0

इसके अलावा, एक्सएएमएल में बहुत अधिक चीजें न डालने का प्रयास करें जो कि वस्तुओं को कैसे दिखाना चाहिए, इस बात से जुड़ा हुआ है। यह एचटीएमएल और सीएसएस की तरह थोड़ा है, आप शैलियों को बना सकते हैं और उन शैलियों को तत्वों पर लागू कर सकते हैं। – Gimly

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