【问题标题】:Update a property when another property changes in Prism当 Prism 中的另一个属性发生变化时更新一个属性
【发布时间】:2020-01-01 05:00:11
【问题描述】:

我的视图模型中有类似的东西

        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); }
        }

在我看来,它们绑定到组合框和标签。当我在组合框中选择其他内容时,我当然想更新标签的值 Property1Unit 和内容。有可能吗?

【问题讨论】:

  • 当您想在 Label 中显示选定的项目时,请将 Label 绑定到 SelectedUnitSystem 属性
  • @Sir Rufo 实际上标签的内容不仅仅是选定的项目。根据项目将是其他内容。
  • 好的,那么你的问题的答案是:是的,有可能。

标签: c# mvvm prism


【解决方案1】:

是的,这是可能的。您可以在您设置的值之后传入您想要执行的任何操作。下面的示例显示了一个情况,其中您有一个连接 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}";
}

【讨论】:

  • 如果其中一个属性是具有 value 字段的对象的可观察集合,而第二个属性是该集合的值的总和,该怎么办?如何通知集合中项目的更改?
  • @AbdelkrimTabetAoul 您的问题超出了本问题的范围,最好作为一个新问题提出。
  • 我按照您的建议创建了一个新主题,这是链接stackoverflow.com/questions/64982977/…
猜你喜欢
  • 1970-01-01
  • 2020-02-21
  • 2017-04-24
  • 2022-08-07
  • 2011-04-03
  • 1970-01-01
  • 2020-03-05
  • 2017-02-03
  • 1970-01-01
相关资源
最近更新 更多