ऐसा लगता है मेरे पिछले जवाब बहुत अच्छी तरह से शब्दों में नहीं किया गया था, के रूप में कई लोगों को बात मैं कर रहा था गलत समझा, तो मैं फिर से खाता लोगों की टिप्पणियों को ध्यान में रखकर की कोशिश करेंगे।
सिर्फ इसलिए कि एक स्ट्रिंग ऑब्जेक्ट अपरिवर्तनीय है इसका मतलब यह नहीं है कि स्ट्रिंग का एक चर बदल नहीं सकता है। यदि किसी ऑब्जेक्ट में स्ट्रिंग प्रकार की प्रॉपर्टी होती है, तो उस प्रॉपर्टी पर एक नई स्ट्रिंग ऑब्जेक्ट असाइन करने से संपत्ति बदल जाती है (मेरे मूल उत्तर में, मैंने इसे परिवर्तनीय उत्परिवर्तन के रूप में संदर्भित किया है, जाहिर है कि कुछ लोग इस शब्द का उपयोग करने से सहमत नहीं हैं " mutate "इस संदर्भ में)।
डब्ल्यूपीएफ डाटाबेसिंग सिस्टम इस संपत्ति से जुड़ सकता है। यदि यह अधिसूचित किया गया है कि संपत्ति INotifyPropertyChanged के माध्यम से बदलती है, तो यह बाध्यकारी के लक्ष्य को अपडेट करेगी, इस प्रकार कई टेक्स्टबॉक्स एक ही संपत्ति से जुड़ने की अनुमति देगी और बिना किसी अतिरिक्त कोड की आवश्यकता के संपत्ति के अपडेट पर सभी परिवर्तनों को अनुमति देगी।
इसलिए, स्ट्रिंगबिल्डर को संपत्ति के लिए बैकिंग स्टोर के रूप में उपयोग करने की आवश्यकता नहीं है। इसके बजाय, आप एक मानक स्ट्रिंग संपत्ति का उपयोग कर सकते हैं और INotifyPropertyChanged लागू कर सकते हैं।
public class MyClass : INotifyPropertyChanged
{
private string myString;
public string MyString
{
get
{ return myString; }
set
{
myString = value;
OnPropertyChanged("MyString");
}
}
protected void OnPropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
{ handler(this, new PropertyChangedEventArgs(propertyName)); }
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
WPF यह करने के लिए बाध्य कर सकते हैं और स्वचालित रूप से और संपत्ति के मूल्य में किए गए परिवर्तनों को लेने होंगे। नहीं, स्ट्रिंग ऑब्जेक्ट को उत्परिवर्तित नहीं किया गया है, लेकिन स्ट्रिंग प्रॉपर्टी में उत्परिवर्तित है (या यदि आप चाहें तो बदल गए हैं)।
विनफॉर्म या डब्ल्यूपीएफ? –
पीएस: टेक्स्टबॉक्स वर्तमान में डब्ल्यूपीएफ है। लेकिन मैं मोनो के कारण विंडोज फॉर्म पर स्विच कर सकता हूं। – user51710