【问题标题】:C#, xamarin, binding many objectsC#,xamarin,绑定许多对象
【发布时间】:2019-02-28 23:17:37
【问题描述】:

所以我有一堆 Frame 对象,我通过代码添加到显示中(它们的数量是可变的)。并且忠实于 MVVM,我需要将每个的背景颜色绑定到模型中的某些内容。所以绑定很简单:

Frame f1 = new Frame();
f1.SetBinding(Frame.BackgroundColorProperty, "BackColor1");
Frame f2 = new Frame();
f2.SetBinding(Frame.BackgroundColorProperty, "BackColor2");

等等。这只是一个简单的例子,真正的事情是在一个循环中。在模型中:

Xamarin.Forms.Color BackColor1
{
    get
    {
        return Color.Black;
    }
}

Xamarin.Forms.Color BackColor2
{
    get
    {
        return Color.White;
    }
}

等等。这适用于一些对象,但如果有 50 个呢? 100?我不想在类中创建 100 个 BackColor 属性;那就是疯狂。我现在只在 C# 和 xamarin 中玩了几个星期,所以我还有很多东西要学。当您需要像这样绑定大量对象时,保持 MVVM 的最佳方式是什么?

【问题讨论】:

  • 我认为不太可能出现需要 100 个或更多不同支持对象的用例。一般来说,当你看到类似的东西时,你会有一个对象集合

标签: c# xamarin binding


【解决方案1】:

这些颜色在分配后会改变吗?如果是这样,则无需停留在“真正的 MVVM”中,我假设您的意思是“使用绑定”。真正的 MVVM 不需要对所有东西都使用绑定,事实上,如果一个属性的值在对象被实例化后不会改变,那么使用绑定就太过分了。可以对属性使用静态值并且仍然在“真正的 MVVM”内。事实上,如果属性的值不会更改,甚至不经常更改,则属性的静态值会更好,因为绑定确实有一些性能开销。所以基本上,每次实例化一个新 Frame 时,只需静态设置 BackgroundColor。

【讨论】:

  • 是的,背景颜色会改变。所有这些框架都在 xaml.cs 中实例化,我在其中都有指向它们的指针。我可以轻松地从那里更改背景颜色,只是不确定这是否是最好的方法,或者是否有某种大规模 MVVM 方法可以从模型中进行。
  • 您可以将多个框架的背景颜色绑定到一个属性,但是如果您确实需要为每个框架使用唯一的颜色,那么恐怕您需要为每个框架的背景绑定一个唯一的属性颜色。
  • 是的,它们必须是独一无二的。我将控制 xaml.cs 中的帧并祈祷 MVVM 大神原谅我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 2017-09-25
  • 1970-01-01
  • 2013-05-28
  • 2016-10-30
  • 1970-01-01
相关资源
最近更新 更多