在 Prism 中另一个 属性 发生变化时更新一个 属性
Update a property when another property changes in Prism
我的视图模型中有类似的东西
public ObservableCollection<string> UnitSystems { get; set; }
private string selectedUnitSystem;
public string SelectedUnitSystem
{
get { return selectedUnitSystem; }
set { SetProperty(ref selectedUnitSystem, value); }
}
private string _property1Unit;
public string Property1Unit
{
get { return _property1Unit; }
set { SetProperty(ref _property1Unit, value); }
}
在我看来,它们绑定到组合框和标签。当然,当我在组合框中 select 其他内容时,我想更新 Property1Unit 的值和标签的内容。可能吗?
是的,这是可能的。您可以在设置的值之后传入要执行的任何操作。下面的示例显示了一个情况,其中您有一个值连接 FirstName 和 LastName 的两个字符串。这只会在 属性 更改时执行,因此如果值为 Dan
并且新值为 Dan
它不会执行,因为它不会首先引发 PropertyChanged。
public class ViewAViewModel : BindableBase
{
private string _firstName;
public string FirstName
{
get => _firstName;
set => SetProperty(ref _firstName, value, () => RaisePropertyChanged(nameof(FullName));
}
private string _lastName;
public string LastName
{
get => _lastName;
set => SetProperty(ref _lastName, value, () => RaisePropertyChanged(nameof(FullName));
}
public string FullName => $"{FirstName} {LastName}";
}
我的视图模型中有类似的东西
public ObservableCollection<string> UnitSystems { get; set; }
private string selectedUnitSystem;
public string SelectedUnitSystem
{
get { return selectedUnitSystem; }
set { SetProperty(ref selectedUnitSystem, value); }
}
private string _property1Unit;
public string Property1Unit
{
get { return _property1Unit; }
set { SetProperty(ref _property1Unit, value); }
}
在我看来,它们绑定到组合框和标签。当然,当我在组合框中 select 其他内容时,我想更新 Property1Unit 的值和标签的内容。可能吗?
是的,这是可能的。您可以在设置的值之后传入要执行的任何操作。下面的示例显示了一个情况,其中您有一个值连接 FirstName 和 LastName 的两个字符串。这只会在 属性 更改时执行,因此如果值为 Dan
并且新值为 Dan
它不会执行,因为它不会首先引发 PropertyChanged。
public class ViewAViewModel : BindableBase
{
private string _firstName;
public string FirstName
{
get => _firstName;
set => SetProperty(ref _firstName, value, () => RaisePropertyChanged(nameof(FullName));
}
private string _lastName;
public string LastName
{
get => _lastName;
set => SetProperty(ref _lastName, value, () => RaisePropertyChanged(nameof(FullName));
}
public string FullName => $"{FirstName} {LastName}";
}