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时,是否还有其他方法可以调用?

感谢

TextBox UpdateSourceTrigger for PropertyChanged and LostFocu

您必须获得对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
{
}