2012-06-28 6 views
12

हम WPF ग्रिड नियंत्रण,
में सीमा और पृष्ठभूमि रंग कैसे सेट कर सकते हैं मैं पंक्तियों और स्तंभ को गतिशील रूप से बना रहा हूं और फिर ग्रिड में जोड़ रहा हूं,
क्या हम रंग और सीमा सेट कर सकते हैं पीछे कोड?WPF ग्रिड में पंक्ति सीमा और पृष्ठभूमि रंग कैसे सेट करें

उत्तर

12

Background रंग सिर्फ Background संपत्ति का उपयोग करके पूरे Grid के लिए सेट किया जा सकता: या आप चाहते हैं अगर यह व्यक्तिगत कोशिकाओं के लिए निर्धारित करते हैं, आप सेल है कि करने के लिए एक तत्व जोड़ने की जरूरत है

<Grid Background="Red" /> 

अपने Background संपत्ति सेट।

सीमाओं के लिए, Grid में केवल ShowGridLines संपत्ति है, जिसका उपयोग पतली बिंदीदार रेखाओं को दिखाने के लिए किया जा सकता है जिसे स्टाइल नहीं किया जा सकता है।

प्रति MSDN:

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

तो अपने ग्रिड के लिए सीमाओं को जोड़ने के लिए, आप Border तत्वों या नियंत्रण है कि ग्रिड कोशिकाओं के लिए एक Border होते हैं, और शैली उन तत्वों को जोड़ने के लिए है।

लेकिन एक विकल्प है। This blog post बताता है कि आप कस्टम ग्रिड बनाने के लिए ग्रिड क्लास का विस्तार कैसे कर सकते हैं जिसमें Grid लाइनों के गुण हैं। मैंने इसे successfully in the past का उपयोग किया है जब मैं ग्रिड लाइनों को प्रस्तुत करना चाहता था, लेकिन किसी ऑब्जेक्ट के साथ प्रत्येक सेल को भरना नहीं चाहता था।

<my:CustomGrid ShowCustomGridLines="True" 
       GridLineBrush="Blue" 
       GridLineThickness="1"> 
0

यह इस ग्रिड के साथ क्या करना चाहता है इस पर निर्भर करता है लेकिन मुझे लगता है कि आप ग्रिड की कोशिकाओं को नियंत्रण के साथ पॉप्युलेट करना चाहते हैं।

आपको नियंत्रणों पर पृष्ठभूमि और सीमा (स्ट्रोक) गुण सेट करना होगा या पहले अपने प्रत्येक नियंत्रण को सीमा में पहले से जोड़ना होगा।

लेकिन, अगर आप प्रत्येक सेल के लिए समान पृष्ठभूमि रंग चाहते हैं, तो ग्रिड की पृष्ठभूमि सेट करें। :)

मुझे उम्मीद है कि मैंने अच्छा जवाब दिया है।

27

यहां एक हैक का एक छोटा सा काम है जो अच्छी तरह से काम करता है। यदि आप उन तत्वों के साथ पंक्तियों/स्तंभों में पृष्ठभूमि तत्व डालते हैं जो आप सामान्य रूप से वहां रखेंगे, तो यह पृष्ठभूमि के रूप में कार्य करेगा। आपको XAML में तत्वों के क्रम को ध्यान में रखना होगा (तत्व जेड-ऑर्डर बढ़ाने में दिखाई देते हैं), या पैनल के अनुसार .Zorder सेट करें।

<Window x:Class="gridBackground.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
     <RowDefinition/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 
     <Border Background="Red" /> 
     <Border Grid.Row="2" Grid.Column="1" Background="Red" />   
     <Border Grid.Row="1" Background="LightBlue" />  
     <Border Grid.Row="2" Background="Orange" /> 
     <Border Grid.Row="0" Grid.Column="1" Background="Orange" /> 
     <TextBlock Grid.ColumnSpan="2" Grid.Row="1" Text="Here is some more text" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
     <TextBlock Grid.ColumnSpan="2" Text="Here is some text" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
     <TextBlock Grid.ColumnSpan="2" Grid.Row="2" Text="Here is even more text" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
    </Grid> 
</Window> 

यह इस तरह दिखता है:

enter image description here

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