के साथ सिंक से बाहर हो रही मैं किसी पाठ बॉक्स के साथ एक WPF दृश्य है, साथ UpdateSourceTrigger PropertyChanged करने के लिए सेट एक ViewModel करने के लिए पाठ क्षेत्र बाध्यकारी।WPF - MVVM - पाठ बॉक्स viewmodel संपत्ति
<TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainViewModel();
}
}
public string Name
{
get { return _Name; }
set
{
if (_Name != value)
{
if (value.Length <= 10)
{
_Name = value;
}
RaisePropertyChanged("Name");
}
}
}
मूल्य सेट नहीं है, मैं अभी भी RaisePropertyChanged (जो केवल PropertyChanged आग): ViewModel में संपत्ति सेटर में, मैं 10 अक्षर से अधिक से पाठ को रोकने के लिए एक सरल जांच की है।
समस्या यह है कि जब मैं यूआई में 11 वीं चरित्र में टाइप करें, मैं नाम_ अद्यतन नहीं करते है। मैं प्रॉपर्टी चेंज किया गया, और मैं देख सकता हूं कि एक्सेसर को कॉल किया जा सकता है और यह केवल 10 वर्णों के साथ स्ट्रिंग देता है। हालांकि, मेरा टेक्स्टबॉक्स इसे प्रतिबिंबित नहीं करता है; यह अभी भी 11 वर्णों के साथ स्ट्रिंग दिखाता है।
उस पर, यह है कि यदि 11 वें चरित्र पर मैं सेटर में पाठ को "त्रुटि" में बदलता हूं, और आग की संपत्ति बदल जाती है, तो टेक्स्टबॉक्स बदलते टेक्स्ट को दिखाने के लिए अद्यतन करता है।
तो क्यों करता है, तो मैं वापस पिछले मान को सेटर में पाठ को बदल, यूआई यह प्रतिबिंबित नहीं करता है कि यह क्या है?
मुझे पता है कि अधिकतम वर्णों को संभालने के वैकल्पिक तरीके हैं, लेकिन यह क्यों काम नहीं करेगा?
धन्यवाद! कोई विचार अगर यह मातृत्व को सूचित किया गया है? यदि नहीं, तो मैं करूँगा। –
@ स्टेव ओसबोर्न: हाहा, मुझे यकीन नहीं है कि यह मातृत्व को सूचित किया गया है :) मैंने पहले देखा है लेकिन मुझे कुछ भी नहीं मिला है, लेकिन यह जानना थोड़ा मुश्किल है कि वास्तव में क्या खोजना है। आगे बढ़ें और इसकी रिपोर्ट करें, मुझे बताएं कि आपके पास कब है और मैं इसे ऊपर उठाऊंगा। –
https://connect.microsoft.com/VisualStudio/feedback/details/745368/wpf-textbox-binding-doesnt-work-properly –