TextBox UpdateSourceTrigger for PropertyChanged and LostFocu
本文关键字:and LostFocu PropertyChanged for UpdateSourceTrigger TextBox | 更新日期: 2023-09-27 18:19:48
你好,我有关于wpf/xaml文本框c#实现的问题。
我正试图弄清楚如何在我的c#代码中知道正在使用什么UpdateSourceTrigger。我是一个新手,所以如果人们对我有耐心并乐于助人,我将不胜感激。
在我的C#中,我需要知道如何使用UpdateSourceTrigger访问文本框中的数据。我知道在调用OnPropertyChanged()时属性发生了更改。但我还需要知道用户是否试图在C#代码中使用LostFocus或PropertyChanged。这样我就可以对任何一种情况进行特殊处理。
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时,是否还有其他方法可以调用?
感谢
您必须获得对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"
获取绑定对象的另一种方法是:
Binding binding = BindingOperations.GetBinding(myTextBox, TextBox.TextProperty);
if (binding.UpdateSourceTrigger.ToString().Equals("LostFocus"))
{
}
else
{
}