2013-08-06 13 views
5

ट्रिगर नहीं कर रहा है मेरे पास 3 ऑब्जेक्ट्स, 2 सूचियों और टेक्स्टबॉक्स के साथ एक टैब नियंत्रण है। पाठ बॉक्स बाध्य है दो तरह से:टेक्स्टबॉक्स दो तरह बाध्यकारी

<TabControl x:Name="tcTabs" ItemsSource="{Binding Rooms, UpdateSourceTrigger=PropertyChanged}" Margin="5" BorderThickness="1" IsSynchronizedWithCurrentItem="True"> 
    <TabControl.ItemContainerStyle> 
     <Style TargetType="TabItem"> 
      <Setter Property="Header" Value="{Binding Name}" /> 
      <Setter Property="ContentTemplate"> 
       <Setter.Value> 
        <DataTemplate> 
         <Grid> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="*" /> 
           <ColumnDefinition Width="Auto"/> 
          </Grid.ColumnDefinitions> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="*"/> 
           <RowDefinition Height="22"/> 
          </Grid.RowDefinitions> 

          <ListBox ItemsSource="{Binding ReceivedMessages}" DisplayMemberPath="Raw" Grid.Row="0" Grid.Column="0" BorderThickness="0" /> 
          <ListBox ItemsSource="{Binding Users}" DisplayMemberPath="Nick" Visibility="{Binding Type, Converter={StaticResource UserListVisibilityConverter}}" Grid.Row="0" Grid.Column="1" BorderThickness="1,0,0,0" BorderBrush="#FFBBBBBB" Width="130" /> 
          <TextBox Text="{Binding CurrentInput, Mode="TwoWay"}" Grid.Row="1" Grid.ColumnSpan="2" BorderThickness="0,1,0,0" BorderBrush="#FFBBBBBB" Height="22" /> 
         </Grid> 
        </DataTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </TabControl.ItemContainerStyle> 
</TabControl> 

बैकअप वस्तु:

public string CurrentInput 
{ 
    get 
    { 
     return _currentInput; 
    } 
    set 
    { 
     if (value != _currentInput) 
     { 
      _currentInput = value; 
      OnPropertyChanged(); 
     } 
    } 
} 

समस्या है, जब मैं पाठ बदलने और एक अन्य टैब पर क्लिक करें यह समर्थन क्षेत्र (यहां तक ​​कि हिट नहीं करता अपडेट नहीं करता सेटर), हालांकि अगर मैं बदलता हूं तो उस सूची बॉक्स पर क्लिक करें ...

इस अजीब व्यवहार के लिए कोई कारण?

+0

का उपयोग कर यह भी 'OnPropertyChanged (" CurrentInput ") की तरह OnPropertyChanged विधि में संपत्ति की बात नहीं इसका कारण हो सकती डेटा बाइंडिंग इंजन का समाधान मैनुअल ट्रिगर द्वारा किया '। अगर पहले से ही कोशिश की है तो कृपया अनदेखा करें। –

उत्तर

3

यह एक अजीब व्यवहार नहीं है और उससे पहले कई बार पूछा गया है। Binding.UpdateSourceTrigger के बारे में पढ़ें, the respective property की टिप्पणियां भी देखें जो आप बाध्य करते हैं।

+0

मैं अपनी अज्ञानता के लिए क्षमा चाहता हूं लेकिन "डेटा-बाध्यकारी परिदृश्यों में उपयोग किए जाने पर, यह गुण UpdateSourceTrigger.LostFocus के डिफ़ॉल्ट अद्यतन व्यवहार का उपयोग करता है।" - जब मैं एक और टैब पर क्लिक करता हूं तो यह "फोकस खो देता है" और इस प्रकार एक अद्यतन को ट्रिगर करना चाहिए? – sprocket12

+1

@ मुहम्मदडा: जरूरी नहीं, डब्ल्यूपीएफ के पास फोकस स्कॉप्स हैं, यदि प्रत्येक टैब का अपना दायरा है तो 'टेक्स्टबॉक्स' अभी भी केंद्रित है। यह भी संभव हो सकता है कि फोकस खोने से पहले नियंत्रण हटा दिया जाए। –

+0

हां और यह कई बार पूछे जाने की तुलना में अधिक जटिल समस्या है। आपकी सहायता के लिए धन्यवाद. – sprocket12

0

मैं इस समस्या (TwoWay बाइंडिंग)

DataContext = this; 
+1

हैलो, अगर आप कोड की इस एकमात्र पंक्ति के लिए अधिक संदर्भ प्रदान करते हैं तो अच्छा होगा। प्रश्न का ठोस संदर्भ है, मुझे यकीन है कि यदि आप इस उत्तर को विस्तृत करते हैं तो आप अधिक लोगों की सहायता करेंगे। – Sombriks

संबंधित मुद्दे