是否可以在WPF中进行绑定,而源和目标是不同的属性。
类似
Binding =“{Binding Source = MySourceProperty,Target = MyTargetProperty}”
根据要求解释我需要做什么: 该程序允许编辑属于数据库中主键的属性。如果属性刚刚更改,那么这将不会更新数据库值或创建重复项,具体取决于我处理保存对象的方式。一个不同的目标将允许它工作(通过使用'old'值明确指定要更新的内容)。
答案 0 :(得分:0)
XAML中定义的Binding
始终定位于其定义的对象和属性。
如果您定义Binding
in code,则可以/必须明确指定源和目标。这基本上就是Binding
类的工作原理:
Binding binding = new Binding("SourceProperty"); // Sets up the source property
myBinding.Source = mySourceObject; // sets up the source object
targetProperty.SetBinding(TargetType.TargetDepProperty, binding); // This sets the target object/binding
绑定的XAML标记扩展会自动设置方程的目标端,因此它始终是您定义绑定的对象。
答案 1 :(得分:0)
在公共财产的集合中,您可以访问旧值
关键是旧值
value是绑定的建议值
你可以拒绝来自绑定的值
private string key;
public string Key
{
get { return key; }
set
{
if (key == value) return;
// try data update
bool success = updateDB();
if (success) key = value; // only update if success
}
}
如果值无效,我会将上述内容与验证结合起来通知用户 Validation Class
答案 2 :(得分:0)
我会尝试回答您需要的内容,而不是问错误 “如果该属性刚刚改变,那么这将不会更新
DB值或创建重复的“ 在您的媒体资源 作为旁注(或偏离主题), 发布后立即: 第一个文本框中键入的文本反映在第二个文本框中,反之亦然,第二个文本框中键入的文本反映在第一个文本框中。 在3d文本框中键入的文本反映在第4个文本框中(在底部的文本块内容中),反之亦然,第4个文本框中键入的文本反映在3d(以及底部的文本块内容中)。 / p>
请注意下载名为
set
中,如果输入的值已更改,则应检查set { if (this.someMember != value)
:public event PropertyChangedEventHandler PropertyChanged;
private string someMember;
public int SomeProperty
{
get
{ return this.someMember; }
set
{
if (this.someMember != value)
{
someMember = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("SomeProperty"));
}
}
}
您可能会觉得有用的是,上一个DataContext in WPF中的codeproject Download the source code文章反映了一个VisualModel属性的更新(与其他VM属性中的更新同步)DataCotext Inner Objects.zip
,该名称已解压缩到名为Bindingtoclassesstate