2013-11-14 6 views
11

के पीछे कोड में बनाए गए ऑब्जेक्ट के लिए बाध्यकारी बस शुरू करने के लिए मैं सी # और xaml के लिए काफी नया हूं।wpf xaml

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

सामान्य में मेरी कोड इस तरह दिखता है:

MainWindow.xaml.cs

public partial class MainWindow : Window 
{ 
    MyTestObject myTestObject; 

    public MainWindow() 
    { 
     myTestObject= new MyTestObject(); 
     this.DataContext = this; 
     InitializeComponent(); 

    } 
} 

MyTestObject .cs

class MyTestObject : INotifyPropertyChanged 
{ 
    public MyTestObject() 
    { 

    } 

    private string testString = "Test"; 
    public string TestString 
    { 
     get { return testString; } 
     set 
     { 
      if (value == testString) return; 
      testString = value; 
      this.OnPropertyChanged("TestString"); 
     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    protected void OnPropertyChanged(string propertyName) 
    { 
     if (PropertyChanged != null) 
      this.PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName)); 
    } 
} 

अंततः मैं काफी एक बहुत कुछ करना होगा (संख्यात्मक) गुणों, जो कई टेक्स्ट बॉक्स में प्रदर्शित होंगे, क्योंकि एस ऑफवेयर को बाहरी हार्डवेयर घटक के लिए एक इंटरफ़ेस के रूप में लक्षित किया जाता है जो मापा डेटा भेजता है। मैंने बाध्यकारी के कई तरीकों की कोशिश की है लेकिन मैं अभी तक सफल नहीं हुआ हूं। मैं उदाहरण के लिए सबसे आभारी हूं कि पहले उल्लिखित संपत्ति को TextBox पर कैसे बांधें।

उत्तर

16

डेटाटेन्टेक्स्ट को myTestObject पर सेट करें। या, myTestObject के लिए एक सार्वजनिक संपत्ति बनाने के लिए और सेट अपने Xaml {बाइंडिंग MyTestObjectPropertyHere.TestString}

उदाहरण के लिए के लिए बाध्य: MainWindow के लिए बाध्य के साथ

public partial class MainWindow : Window 
{ 
    MyTestObject myTestObject; 

    public MainWindow() 
    { 
     myTestObject = new MyTestObject(); 

     this.DataContext = myTestObject; 

     InitializeComponent(); 

    } 
} 

Xaml

<TextBox Text="{Binding Path=TestString}" /> 

उदाहरण डेटाकॉन्टेक्स्ट के रूप में:

public partial class MainWindow : Window 
{ 
    MyTestObject myTestObject; 

    public MyTestObject MyTestObjectProperty { get { return myTestObject; } } 

    public MainWindow() 
    { 
     myTestObject = new MyTestObject(); 

     this.DataContext = this; 

     InitializeComponent(); 

    } 
} 

Xaml

<TextBox Text="{Binding Path=MyTestObjectProperty.TestString}" /> 
+1

मैं अंत में कई वस्तुओं होगा, तो मेरा मानना ​​है कि मैं myTestObject को DataContext निर्धारित नहीं कर सकते, क्योंकि बाद में मैं उनमें से बाकी बाध्य करने में सक्षम नहीं होगा? अनुमान है कि सार्वजनिक संपत्ति इस मामले में जाने का एक तरीका होगा? – xnonamex

+1

xnonamex: हां, एक सार्वजनिक संपत्ति यदि आप मेनविंडो में कई अलग-अलग वस्तुओं के लिए बाध्यकारी होने जा रहे हैं। मैं एक उदाहरण के साथ अद्यतन करूँगा। –