2014-08-28 3 views
0

Здравствуйте, у меня вопрос о текстовом поле wpf/xaml C#.TextBox UpdateSourceTrigger для PropertyChanged и LostFocus

Я пытаюсь выяснить, как в моем коде C# знать, что используется UpdateSourceTrigger. Я новичок, поэтому я очень признателен, если люди будут терпеливы со мной и полезны.

В моем C# мне нужно знать, как данные в текстовом поле пытаются получить доступ с помощью UpdateSourceTrigger. Я знаю, что свойство изменилось при вызове OnPropertyChanged(). Но мне также нужно знать, как пользователь пытается использовать LostFocus или PropertyChanged в коде C#. Это значит, что я могу сделать специальную обработку для любого случая.

XAML

<TextBox> 
    <TextBox.Text> 
     <Binding Source="{StaticResource myDataSource}" Path="Name" 
     UpdateSourceTrigger="PropertyChanged"/> 
    </TextBox.Text> 
</TextBox>  

C#

protected void OnPropertyChanged(string name) 
{ 
    // If UpdateSourceTrigger= PropetyChanged then process one way 
    // If UpdateSourceTrigger= LostFocus then process one way 
} 

Есть ли какие-либо другие методы, которые вызываются при использовании LostFocus?

Спасибо Вам

ответ

2

Вы должны получить ссылку на свой TextBlock и получить выражение привязки, то вы будете иметь доступ к Binding информации

не Пример: (без ошибок/нуля проверки)

<TextBox x:Name="myTextblock"> 
    <TextBox.Text> 
     <Binding Source="{StaticResource myDataSource}" Path="Name" 
     UpdateSourceTrigger="PropertyChanged"/> 
    </TextBox.Text> 
</TextBox> 


var textblock = this.FindName("myTextBlock") as TextBlock; 
var trigger = textblock.GetBindingExpression(TextBlock.TextProperty).ParentBinding.UpdateSourceTrigger; 
// returns "PropertyChanged" 
1

другой способ получить объект привязки является:

Binding binding = BindingOperations.GetBinding(myTextBox, TextBox.TextProperty); 

if (binding.UpdateSourceTrigger.ToString().Equals("LostFocus")) 
{ 

} 
else 
{ 

} 
Смежные вопросы