2009-11-11 15 views
5

मैं वर्तमान में wpf में संग्रह में कुछ आइटमों से जुड़ने की कोशिश कर रहा हूं। यह एक उदाहरण से सबसे अच्छा समझाया गया है। के रूप में आप मैं सिर्फ दीर्घवृत्त का एक सरल उदाहरण के रूप में गुण के लिए बाध्य कर रहा हूँ पर एक्स और मेरे डेटा स्रोत से y अक्ष स्थित करने के लिए देख सकते हैंसंग्रह में विशिष्ट वस्तुओं के लिए WPF बाध्यकारी

<Canvas Name="TaskCanvas" Width="467.667" Height="414"> 
    <Ellipse Name="myElipse" Fill="White" Stroke="Black" Width="126" Height="76" 
      Canvas.Left="{Binding Path=XPos}" Canvas.Top="{Binding Path=YPos}" /> 
</Canvas>  

अब:

मेरे XAML नीचे है।

PosClass posclass = new PosClass(); 
List<PosClass> posClasses = new List<PosClass>(); 

posclass.YPos = 100; 
posclass.XPos= 100;    
posClasses.Add(posclass); 

posclass.YPos = 0; 
posclass.XPos = 0; 
posClasses.Add(posclass); 

TaskCanvas.DataContext = posClasses; 

अब मैं अपने संग्रह से कैनवास cotainer करने के लिए एक बाध्यकारी किया:

मैं जैसा कि नीचे दिखाया मेरी अंडाकार करने के लिए अपने डेटा स्रोत बाध्य करने के लिए window_load घटना में सी # कोड है। PosClass एक साधारण वर्ग है जिसमें दो गुण 'XPos' और 'YPos' हैं।

जब मैं कोड सेट चलाता हूं तो मेरा अंडाकार डेटासेट को सही ढंग से बाध्य करता है जो कि बहुत अच्छा है लेकिन जैसा कि अंडाकार संग्रह से सटीक पंक्ति लेने के लिए सेट नहीं है, डिफ़ॉल्ट रूप से अंतिम पंक्ति लेता है ताकि मेरा अंडाकार 0 पर सेट हो सके, 0 स्थिति

मैं जो करने में सक्षम होना चाहता हूं वह एक्सएएमएल में संलग्न संग्रह में पहले आइटम का उपयोग करने के लिए अंडाकार सेट कर रहा है या यदि मेरे पास अधिक आइटम हैं तो 10 वीं आइटम कहें। फिर मैं इसे एक्सएएमएल में करना चाहता हूं, इसलिए वर्तमान में मेरे पास एक्स और वाई पदों के लिए बाध्यकारी है, क्या कुछ प्रकार का वाक्यविन्यास है जो मुझे यह भी निर्दिष्ट करता है कि संग्रह में कौन सी पंक्ति का उपयोग किया जाए?

उत्तर

6

आप जो आइटम आप कोष्ठक का उपयोग करने के लिए बाध्य करना चाहते हैं निर्दिष्ट कर सकते हैं:

:

<Ellipse Name="myElipse" Fill="White" Stroke="Black" Width="126" Height="76" Canvas.Left="{Binding Path=[10].XPos}" Canvas.Top="{Binding Path=[10].YPos}"/> 

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

<ItemsControl> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <Canvas /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <Ellipse Name="myElipse" Fill="White" Stroke="Black" Width="126" Height="76" Canvas.Left="{Binding Path=XPos}" Canvas.Top="{Binding Path=YPos}"/> 
    </ItemsControl.ItemTemplate> 
</ItemsContol> 
+1

मुझे एक ही समस्या है, लेकिन मुझे किसी ऐसे आइटम पर बाध्य करने की आवश्यकता है जहां किसी विशेष संपत्ति का निश्चित मूल्य हो। तो इस उदाहरण में कल्पना करें कि PosClass में Posid नामक एक संपत्ति है। मैं कहां चाहता हूं कि पॉजिड = 15. कोई विचार? –

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