Android MvvmCross - 绑定到静态常量
Android MvvmCross - Bind to static constant
使用带有共享核心库的 MvvmCross 开发 Android 应用程序,我想知道是否有可能将位于视图模型外部的静态常量绑定到 属性看法。例如将标签栏的背景颜色绑定到 Colors class.
中的 TabBar 字段
public static class Colors
{
public static readonly MvxColor MainGray = new MvxColor(0xff2D3030);
public static MvxColor TabBar => MainGray;
}
如果这不可能,是否有任何我可以考虑的最佳做法?
虽然您无法完全按照自己的意愿行事,但您可以采用其他几种不同的方法。最简单的方法是在 ViewModel 的 属性 中存储对颜色的引用。所以你可以这样做:
public MvxColor BackgroundColor => Colors.MainGray;
然后您可以自由地将任何颜色绑定到我刚刚创建的 属性。
另一个选项是让你的颜色 class 实例化而不是静态的。然后,您可以将 class 的实例存储在 ViewModel 的 属性 中并绑定到其属性。例如,如果您有:
public ViewModel()
{
CoreColors = new Colors();
}
public Colors CoreColors;
然后您可以将 BackgroundColor 绑定到 CoreColors.MainGray
还有很多其他方法可以做到这一点,但对于您当前的设置,这些方法中的任何一种都可以正常工作!然而,值得记住的是,如果您想更新颜色并让它更新绑定,您需要确保 属性 上有一些东西通知绑定它需要更新。如果你采用我的第二个例子,这就是我如何设置你的颜色 class 来支持这个:
public class Colors : MvxNotifyPropertyChanged
{
public static MvxColor MainGray => new MvxColor(0xff2D3030);
private MvxColor _tabBar = MainGray;
public MvxColor TabBar
{
get { return _tabBar; }
set { SetProperty(ref _tabBar, value); }
}
}
现在,如果您想绑定到 TabBar,TabBar 将是 MainGray,直到您将 TabBar 颜色设置为其他颜色,UI 应该更新颜色。
使用带有共享核心库的 MvvmCross 开发 Android 应用程序,我想知道是否有可能将位于视图模型外部的静态常量绑定到 属性看法。例如将标签栏的背景颜色绑定到 Colors class.
中的 TabBar 字段public static class Colors
{
public static readonly MvxColor MainGray = new MvxColor(0xff2D3030);
public static MvxColor TabBar => MainGray;
}
如果这不可能,是否有任何我可以考虑的最佳做法?
虽然您无法完全按照自己的意愿行事,但您可以采用其他几种不同的方法。最简单的方法是在 ViewModel 的 属性 中存储对颜色的引用。所以你可以这样做:
public MvxColor BackgroundColor => Colors.MainGray;
然后您可以自由地将任何颜色绑定到我刚刚创建的 属性。
另一个选项是让你的颜色 class 实例化而不是静态的。然后,您可以将 class 的实例存储在 ViewModel 的 属性 中并绑定到其属性。例如,如果您有:
public ViewModel()
{
CoreColors = new Colors();
}
public Colors CoreColors;
然后您可以将 BackgroundColor 绑定到 CoreColors.MainGray
还有很多其他方法可以做到这一点,但对于您当前的设置,这些方法中的任何一种都可以正常工作!然而,值得记住的是,如果您想更新颜色并让它更新绑定,您需要确保 属性 上有一些东西通知绑定它需要更新。如果你采用我的第二个例子,这就是我如何设置你的颜色 class 来支持这个:
public class Colors : MvxNotifyPropertyChanged
{
public static MvxColor MainGray => new MvxColor(0xff2D3030);
private MvxColor _tabBar = MainGray;
public MvxColor TabBar
{
get { return _tabBar; }
set { SetProperty(ref _tabBar, value); }
}
}
现在,如果您想绑定到 TabBar,TabBar 将是 MainGray,直到您将 TabBar 颜色设置为其他颜色,UI 应该更新颜色。