当我将类对象的值赋给其他类对象时,当我更改第一个对象的属性时,它会反映在其他对象中。
实施例: A类具有int Aid类型的属性
SelectedA是Viewmodel类的属性,绑定到A WPF视图。 SelectedA.Aid使用组合框进行TwoWay绑定。 我创建了另一个对象objectA并分配了objectA = SelectedA。
当我更改objectA.Aid的组合框值时出现问题也会发生变化。
感谢先进,我需要避免将objectA与SelectedA绑定。
Vehicle dbvalue
private Vehicle _selectedA;
public Vehicle SelectedA
{
get { return _selectedA; }
set
{
_selectedA = value;
RaisePropertyChanged("SelectedA");
}
}
public partial class A
{
public int AID { get; set; }
public string AName { get; set; }
}
<ComboBox
DisplayMemberPath="AName"
ItemsSource="{Binding items}"
SelectedValue="{Binding SelectedA.AID}"
SelectedValuePath="AName "/>
在viewmodel类中 我用过
dbvalue = SelectedA;
当我更改组合框值时,dbvalue.AID也会更改。
答案 0 :(得分:0)
您可以将SelectedValue
绑定的行为设置为仅在源更改时更新。
SelectedValue="{Binding SelectedA.AID, Mode=OneWay}"
这些是从MSDN站点解除的绑定模式的其他可能值:
TwoWay
就会更新目标属性或属性。OneWay
仅在源属性更改时更新目标属性。OneTime
仅在应用程序启动或DataContext发生更改时更新目标属性。OneWayToSource
在目标属性更改时更新source属性。Default
会导致使用目标属性的默认模式值。答案 1 :(得分:0)
为防止出现此问题,您可以按如下方式设置对象的每个属性:
objectA.AId = SelectedA.AId
objectA.AName = SelectedA.AName
祝你好运