2011-06-01 22 views
55

मेरे पास ListViewItem है कि मैं Style पर आवेदन कर रहा हूं और मैं नीचे के रूप में एक बिंदीदार ग्रे रेखा डालना चाहता हूं।मैं डब्ल्यूपीएफ में एक धराशायी या बिंदीदार सीमा कैसे प्राप्त कर सकता हूं?

मैं इसे WPF में कैसे कर सकता हूं? मैं केवल ठोस रंग ब्रश देख सकता हूँ।

+0

आप इस http://stackoverflow.com/questions/1630022/dotted-border-on-listboxitem-in-wpf –

+0

नहीं की जाँच कर दी: यह थोड़ा सरल/दोनों अन्य समाधान की तुलना में बेहतर है । आप _simple_ तरीके से नहीं जानते हैं? यह एक हैक की तरह लगता है। – dan

+0

संबंधित पोस्ट, और शायद सबसे अच्छा जवाब http://stackoverflow.com/questions/14936002/dotted-border-around-a-button –

उत्तर

88

यह हमारे आवेदन में महान काम किया बनाते हैं और अपने सूचीदृश्य अनुकूलित कर सकते हैं,

<Border BorderThickness="1,0,1,1"> 
    <Border.BorderBrush> 
     <DrawingBrush Viewport="0,0,8,8" ViewportUnits="Absolute" TileMode="Tile"> 
     <DrawingBrush.Drawing> 
      <DrawingGroup> 
       <GeometryDrawing Brush="Black"> 
        <GeometryDrawing.Geometry> 
        <GeometryGroup> 
         <RectangleGeometry Rect="0,0,50,50" /> 
         <RectangleGeometry Rect="50,50,50,50" /> 
        </GeometryGroup> 
        </GeometryDrawing.Geometry> 
       </GeometryDrawing> 
      </DrawingGroup> 
     </DrawingBrush.Drawing> 
     </DrawingBrush> 
    </Border.BorderBrush> 

    <TextBlock Text="Content Goes Here!" Margin="5"/> 
</Border> 

ध्यान दें कि व्यूपोर्ट लाइनों में डैश के आकार को निर्धारित: कोई वास्तविक सीमा और नहीं आसपास गंदगी आयत के साथ प्रयोग कर सकेंगे। इस मामले में, यह आठ पिक्सेल डैश उत्पन्न करता है। व्यूपोर्ट = "0,0,4,4" आपको चार-पिक्सेल डैश देगा।

+0

इसका उपयोग अन्य तत्वों पर कैसे किया जा सकता है जिन्हें एक ही शैली की आवश्यकता होती है। –

+0

आप एक ऐसी शैली को परिभाषित कर सकते हैं जिसमें ड्रॉइंगब्रश शामिल है और फिर उस शैली को जो भी तत्व आप चाहते हैं उसे लागू करें। –

+0

दो आयताकार वास्तव में इस तरह से गठबंधन होते हैं कि यह पैटर्न सीमा, क्षैतिज और ऊर्ध्वाधर, बाएं और दाएं चारों ओर काम करता है। (बेहतर गैर-आयताकार रेखाओं के लिए इसका उपयोग करने की कोशिश न करें ...) – ygoe

69

आप एक आयत का उपयोग कर एक डॉटेड या डैश लाइन की तरह कोड में

<Rectangle Stroke="#FF000000" Height="1" StrokeThickness="1" StrokeDashArray="4 4" 
                 SnapsToDevicePixels="True"/> 

नीचे इस के साथ आरंभ करें अपने परिदृश्य के अनुसार

+1

गोलाकार कोनों के साथ ऐसा करने का कोई तरीका? – Jordan

+4

@ जोर्डन 'रेडियसएक्स = "10" त्रिज्या = "10" 'का प्रयोग करें। –

2

पार्टी के लिए थोड़ा देर हो चुकी है, लेकिन निम्नलिखित समाधान मेरे लिए काम किया। - धन्यवाद के लिए कि

<Border BorderThickness="1"> 
    <Border.BorderBrush> 
    <VisualBrush> 
     <VisualBrush.Visual> 
     <Rectangle StrokeDashArray="4 2" Stroke="Gray" StrokeThickness="1" 
        Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=ActualWidth}" 
        Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=ActualHeight}"/> 
     </VisualBrush.Visual> 
    </VisualBrush> 
    </Border.BorderBrush> 

    <TextBlock Text="Whatever" /> 
</Border> 
+0

प्रतिभा। पहला जवाब गोलाकार कोनों के साथ खराब था। यह उत्कृष्टता से काम करता है। आयत पर रेडियसएक्स/वाई को उसी कॉर्नर रेडियस पर सेट करें जो सीमा पर है। –