<!-- View -->
<TextBox Text="{Binding str, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
// View Model
private string _str;
public string str
{
get { return _str; }
set
{
if (!value.Contains("a"))
_str = value;
OnPropertyChanged(nameof(str));
}
}
टाइपिंग जब पाठ बॉक्स में टाइप मैं इसे बाहर कोई अमान्य वर्ण फेंक करना चाहते हैं (इस नमूने मामले में पत्र 'एक' है, लेकिन यह वास्तव में कुछ के लिए हो सकता है)। उदाहरण के लिए:UWP पाठ बॉक्स बाइंडिंग TwoWay का सम्मान न जब
- उपयोगकर्ता प्रकार 'एफडी' एक का पता लगाता है एक 'एक'
- str द्वारा पीछा किया, तो यह 'fdsa' के लिए _str निर्धारित नहीं करता है, यह 'एफडी' पर रखते हुए लेकिन वैसे भी घटना को जन्म देती है 'ए' को फेंकने के दृष्टिकोण को इंगित करने के लिए।
- डब्ल्यूपीएफ में, इसका परिणाम 'एफडीएस' युक्त टेक्स्टबॉक्स में होता है। यूडब्लूपी में, इसका परिणाम टेक्स्टबॉक्स में गलत रूप से 'fdsa' होता है।
ऐसा प्रतीत होता है कि जब नियंत्रण पर ध्यान केंद्रित किया जाता है तो यूडब्ल्यूपी में, यह दोवे बाध्यकारी का सम्मान नहीं करेगा।
मैं एक बटन बना सकता हूं जिसमें एक क्लिक ईवेंट है जो दबाए जाने पर मेरे टेक्स्टबॉक्स को सही तरीके से अपडेट करेगा।
private void btn_Click(object sender, RoutedEventArgs e)
{
OnPropertyChanged(nameof(str));
}
हम कई ViewModels है कि हम दोनों WPF और UWP विचारों में उपयोग करने की आवश्यकता है, और हम हर जगह यह आवश्यक व्यवहार किया है। इस समस्या का अच्छा समाधान क्या है?
* संपादित करें *
वापस सप्ताह के अंत के बाद समस्या के पास आया और यह अपने आप तय कर दी है लगता है। मुझे कोई जानकारी नहीं है की क्यों। मैं अभी के लिए सवाल बंद कर रहा हूँ।
मुझे लगता है कि यूडब्लूपी से संबंधित एक तरह की समस्या है, मुझे लगता है कि बहुत से लोग यूपीपी पर दो तरह से बाध्यकारी शिकायत करते हैं, मैंने डेस्कटॉप एप्लिकेशन पर एक परीक्षण किया और ठीक काम करता है। शायद एक कनवर्टर आपकी मदद कर सकता है। –
मुझे लगता है कि जब तक मैं स्पष्ट रूप से UpdateSourceTrigger = PropertyChanged – Saxar
सेट करता हूं, तो क्या यह कभी पता चलता है कि यह क्यों हुआ? मुझे यह समस्या है। – user3007447