gpt4 book ai didi

mvvm - Prism 中的计算属性

转载 作者:行者123 更新时间:2023-12-03 10:21:22 26 4
gpt4 key购买 nike

在Prism MVVM框架中执行计算属性的最佳方法是什么?我在VM上有一个带有以下属性的Xamarin.Forms应用程序:

private string _title;
public string Title
{
get { return _title; }
set
{
SetProperty(ref _title, value);
OnPropertyChanged(() => Message);
}
}

private string _name = "John";
public string Name
{
get { return _name; }
set
{
SetProperty(ref _name, value);
OnPropertyChanged(() => Message);
}
}

public string Message
{
get { return String.Format("{0},{1}", Name, Title); }
}

该代码工作正常。但是,Prism库在 OnPropertyChanged语句上警告我使用 RaisePropertyChanged,它将避免使用魔术字符串,并且带有表达式的OnPropertyChanged效率较低。

每当名称或标题更改时,是否还有其他方法可以通知 View 重新读取“消息”?

我想也许Prism可以进行设置,以使“名称”和“标题”不必知道Message即可更新Message。如果可能的话,这将是更可取的。做计算属性的“Prism”方法是什么?我在他们的 Xamarin.Forms文档中找不到任何示例。

最佳答案

如果您尝试以更困难的方式执行此操作,则可以执行以下操作:

public class FooViewModel : BindableBase
{
private string _foo;
public string Foo
{
get => _foo;
set => SetProperty(ref _foo, value, () => RaisePropertyChanged(nameof(FooBar)));
}

public string FooBar => $"{Foo} Bar";
}

如果您想让生活更轻松一点,请安装 PropertyChanged.Fody,然后可以使用如下所示的ViewModel:
public class SomeViewModel : BindableBase
{
public string FirstName { get; set; }

public string LastName { get; set; }

public string FullName => $"{FirstName} {LastName}";
}

Fody应该给您一个空的Weavers.xml,您只需将其更新为:
<?xml version="1.0" encoding="utf-8"?>
<Weavers>
<PropertyChanged EventInvokerNames="RaisePropertyChanged" />
</Weavers>

关于mvvm - Prism 中的计算属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44658877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com