在 WPF 中使用绑定时如何检查数据
How to check data when using binding in WPF
也许这很简单,但我还没有找到解决问题的方法。
当我使用绑定并且用户更改了例如文本框中的文本时,我如何执行一些后台检查,例如:
- 这个名字是否已经在我的数据库中
- 名称是否符合我允许的字符集
无需绑定,这很容易,我只需调用执行此操作的函数即可。
示例:
<TextBox x:Name="textbox_Name" Height="23" Margin="108,37,20,0" TextWrapping="Wrap" Text="{Binding Name,UpdateSourceTrigger=LostFocus}" VerticalAlignment="Top"/>
- 数据上下文是 ObjectXYZ。
- ObjectXYZ 具有名称和描述属性。
- 我还有一个数据库,其中包含一个名为 "list"
的 "ObjectXYZ" 类型的 ObservableCollection
通常我会做这样的事情:
if(!Database.isExistingObject(textbox_Name.Text)
{ ObjectXYZ.Name=textbox_Name.Text;
}
通过绑定,名称会直接更改(双向绑定)...我如何在更改前检查它?
如果您在用户更新文本框内容后立即调用背景调查,您仍然可以调用它们。
private string name;
public string Name
{
get
{
return name;
}
set
{
CheckName(value); // Or whatever are you check functions
name = value;
PropertyChanged("Name");
}
}
希望对您有所帮助。
也许这很简单,但我还没有找到解决问题的方法。
当我使用绑定并且用户更改了例如文本框中的文本时,我如何执行一些后台检查,例如:
- 这个名字是否已经在我的数据库中
- 名称是否符合我允许的字符集
无需绑定,这很容易,我只需调用执行此操作的函数即可。
示例:
<TextBox x:Name="textbox_Name" Height="23" Margin="108,37,20,0" TextWrapping="Wrap" Text="{Binding Name,UpdateSourceTrigger=LostFocus}" VerticalAlignment="Top"/>
- 数据上下文是 ObjectXYZ。
- ObjectXYZ 具有名称和描述属性。
- 我还有一个数据库,其中包含一个名为 "list" 的 "ObjectXYZ" 类型的 ObservableCollection
通常我会做这样的事情:
if(!Database.isExistingObject(textbox_Name.Text)
{ ObjectXYZ.Name=textbox_Name.Text;
}
通过绑定,名称会直接更改(双向绑定)...我如何在更改前检查它?
如果您在用户更新文本框内容后立即调用背景调查,您仍然可以调用它们。
private string name;
public string Name
{
get
{
return name;
}
set
{
CheckName(value); // Or whatever are you check functions
name = value;
PropertyChanged("Name");
}
}
希望对您有所帮助。