【发布时间】:2021-05-26 07:22:21
【问题描述】:
我想提高我的 Xamarin.Forms 应用程序的性能(基于 MVVM 模式)。现在,我已经从 viewmodel 绑定到我的所有静态标签。
查看 (XAML):
<Label Text="{Binding Text}" />
视图模型:
public string Text => CustomResourceManager.Current.Get(nameof(UserInterface.Text));
我想知道将其更改为这样的内容是否会更快。
查看 (XAML):
<Label x:Name="TextLabel" />
代码隐藏:
public MyView()
{
InitializeComponent();
TextLabel.Text = CustomResourceManager.Current.Get(nameof(UserInterface.Text));
}
您有任何经验或验证我的重构想法的更简单方法吗?
【问题讨论】:
-
第二种方法“开销比绑定少”(来自here)。但真正的问题是你有性能问题吗?我没有 xamarin 方面的专业知识,但在 wpf 中,如果所有标签文本都以类似方式检索,您可以轻松创建 custom markup extension 以减少代码量。
-
我知道这样的东西更快:Button.Text = "Accept",但在我的情况下,我必须从我的 CustomResourceManager 获取它并从代码隐藏中设置。我假设从 CustomResourceManager 获取字符串的时间是 const 并且不依赖于 MVVM 或代码隐藏。我正在寻找一种提高性能的方法,因为我的应用中的视图很复杂,甚至 50 毫秒,同时渲染会增加用户的感受。
-
您是否已经确定了瓶颈?如果没有,请使用分析器。我怀疑像上面这样的简单绑定会很重要,认为每个人都必须ask his performance question。
-
“我想知道把它改成这样会不会更快。” -- there's only one way to find out
标签: c# performance xamarin xamarin.forms mvvm