您好我对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时是否还有其他方法被调用?
谢谢你
答案 0 :(得分: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 :(得分:1)
获取绑定对象的另一种方法是:
Binding binding = BindingOperations.GetBinding(myTextBox, TextBox.TextProperty);
if (binding.UpdateSourceTrigger.ToString().Equals("LostFocus"))
{
}
else
{
}