तुम दोनों बेन और ausadmin के समाधान गठबंधन हैं, तो आप एक बहुत MVVM अनुकूल समाधान के साथ अंत:
<TextBox Text="{Binding Txt1, Mode=TwoWay, UpdateSourceTrigger=Explicit}">
<TextBox.InputBindings>
<KeyBinding Gesture="Enter"
Command="{Binding UpdateTextBoxBindingOnEnterCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type TextBox}}}" />
</TextBox.InputBindings>
</TextBox>
... जिसका मतलब है कि आप Command
को पैरामीटर के रूप में TextBox
गुजर रहे हैं ही।
public bool CanExecuteUpdateTextBoxBindingOnEnterCommand(object parameter)
{
return true;
}
public void ExecuteUpdateTextBoxBindingOnEnterCommand(object parameter)
{
TextBox tBox = parameter as TextBox;
if (tBox != null)
{
DependencyProperty prop = TextBox.TextProperty;
BindingExpression binding = BindingOperations.GetBindingExpression(tBox, prop);
if (binding != null)
binding.UpdateSource();
}
}
यह Command
कार्यान्वयन सब कोई कोड का सबसे अच्छा किसी भी TextBox
के लिए इस्तेमाल किया जा सकता है:
यह आपके Command
इस तरह लग रही (यदि आप अपने वी एम में एक DelegateCommand
शैली कार्यान्वयन का उपयोग कर रहे हैं) की ओर जाता है कोड-बैक में हालांकि आप इसे अपनी कक्षा में रखना चाहते हैं, इसलिए आपके वीएम में System.Windows.Controls
पर कोई निर्भरता नहीं है। यह इस बात पर निर्भर करता है कि आपके कोड दिशानिर्देश कितने सख्त हैं।
मैंने कोशिश की <टेक्स्टबॉक्स x: नाम = "itemNameTextBox" टेक्स्ट = "{बाइंडिंग स्रोत, ElementName = webBrowser कस्टम, मोड = दोवे, अपडेटसोर्स ट्रिगर = प्रॉपर्टी चेंजड}" बी: इनपुट बाइंडिंग्स मैनेजर.अपडेटप्रॉपर्टीसोर्सवेन एंटर दबाया गया = "टेक्स्टबॉक्स। टेक्स्ट" /> लेकिन ऐसा लगता है कि वेबब्रोसर अपने स्रोत को अद्यतन नहीं करता है। कुछ भी मुझे याद आया? मैंने किसी भी घटना को संभाल नहीं किया। मैं 2 तरीके बाध्यकारी, अपने ऑटो हैंडल घटना द्वारा मानते हैं। क्या मै गलत हु? धन्यवाद। –
भावी पाठकों को कुछ मिनटों को झुकाव बचाने के प्रयास में, मैंने अभी इसे अपने प्रोजेक्ट में इस्तेमाल किया है, और उपर्युक्त नमूना एक्सएएमएल सही काम नहीं करता है। स्रोत प्रत्येक चरित्र परिवर्तन पर अद्यतन किया गया था। "UpdateSourceTrigger = PropertyChanged" को "UpdateSourceTrigger = Explicit" में बदलकर समस्या को हल किया गया। अब यह सब वांछित के रूप में काम करता है। – ihake
@ihake: मुझे लगता है कि आपका अनुशंसित परिवर्तन – VoteCoffee