2011-02-02 38 views
5

मैं xaml में कैनवास रखना चाहता हूं जहां मैं कुछ आइकन रखता हूं। ये आइकन इस तरह बहुभुज हैं:पुन: प्रयोज्य बहुभुज

<Polygon Points="0,0 20,50, 0,50 20,0" Fill="Red" Stretch="Uniform"/> 

लेकिन मैं एक आइकन कई बार उपयोग करना चाहते हैं, तो मैं इस तरह के संसाधनों में यह निर्धारित करना चाहते हैं और एक निश्चित स्थान पर कैनवास में संदर्भ द्वारा शामिल, किसी न किसी प्रकार :

<Page.Resources> 
    <Polygon Key="icon1" Points="0,0 20,50, 0,50 20,0" Fill="Red" Stretch="Uniform"/> 
    <Polygon Key="icon2" Points="0,0 10,30, 10,60 20,0" Fill="Blue" Stretch="Uniform"/> 
    ... 
</Page.Resources>  
<Canvas> 
    <Polygon Reference="icon1" X="0" Y="0"/> 
    <Polygon Reference="icon2" X="10" Y="10"/> 
    <Polygon Reference="icon1" X="20" Y="20"/> 
    ...   
</Canvas> 

मैं http://www.codeproject.com/KB/WPF/GraphicInXAMLAndWPF.aspx जहां बहुभुज एक ड्राइंग छवि में जमा हो जाती है, लेकिन बहुत भूमि के ऊपर करने के लिए हो रहा है पर एक संभव समाधान मिल गया।

किसी के पास यह हल करने का बेहतर विचार है?

उत्तर

7

शायद उपयोगकर्ता नियंत्रण बनाने के लिए सबसे स्पष्ट और लचीली विधि है। आप समाधान एक्सप्लोरर से UserControl प्रकार की एक नई फ़ाइल जोड़ सकते हैं, अपने पॉलीगॉन को 'लेआउट रूट' ग्रिड में जोड़ें जो विजुअल स्टूडियो बनाएगा। फिर आप अपने उपयोगकर्ता नियंत्रण की तरह कई उदाहरण बना सकते हैं!

हालांकि, एसओ पर समान समस्याओं की जांच करने के लिए, आप बहुभुज प्रस्तुत करने के लिए सामग्री नियंत्रण का उपयोग कर सकते हैं, नोट, आपको यह सुनिश्चित करने के लिए x: Shared = "false" का उपयोग करना होगा कि आप पुनः उपयोग करने का प्रयास नहीं कर रहे हैं हर बार एक ही बहुभुज।

<Page.Resources> 
    <Polygon x:Key="icon1" x:Shared="False" 
      Points="0,0 20,50, 0,50 20,0" Fill="Red" Stretch="Uniform"/> 
    <Polygon x:Key="icon2" x:Shared="False" 
      Points="0,0 10,30, 10,60 20,0" Fill="Blue" Stretch="Uniform"/> 
    ... 
</Page.Resources>  
<Canvas> 
    <ContentControl Content="{StaticResource icon1}" Canvas.Top="0" Canvas.Left="0"/> 
    <ContentControl Content="{StaticResource icon2}" Canvas.Top="0" Canvas.Left="10"/> 
    <ContentControl Content="{StaticResource icon1}" Canvas.Top="0" Canvas.Left="20"/> 
    ...   
</Canvas> 

निम्नलिखित देखें:

+0

मैं पहले से ही इस बारे में सोचा है, लेकिन मुझे लगता है कि, वहाँ कम भूमि के ऊपर के साथ एक आसान समाधान होना चाहिए। यह केवल एक छोटा बहुभुज है। – SpeziFish

+0

मेरा अद्यतन उत्तर देखें - उम्मीद है कि इससे मदद मिलती है! – ColinE

+0

वाह, बहुत अच्छा, बिल्कुल मैं क्या देख रहा था, धन्यवाद! – SpeziFish

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