Xamarin.ios MvvmCross MvxFormFactorSpecific iPad/iPhone属性
我有iPhone和iPad特定的视图控制器,它们分别具有MvxFormFactorSpecific(MvxTouchFormFactor.Phone)和MvxFormFactorSpecific(MvxTouchFormFactor.Pad)属性。当应用程序在iPad上运行时,会找到并实例化正确的视图。然而,当应用程序在4英寸的iPhone上运行时,它会抛出一个异常,说“找不到…的视图”。那么这是一个bug还是我做错了什么Xamarin.ios MvvmCross MvxFormFactorSpecific iPad/iPhone属性,xamarin.ios,mvvmcross,Xamarin.ios,Mvvmcross,我有iPhone和iPad特定的视图控制器,它们分别具有MvxFormFactorSpecific(MvxTouchFormFactor.Phone)和MvxFormFactorSpecific(MvxTouchFormFactor.Pad)属性。当应用程序在iPad上运行时,会找到并实例化正确的视图。然而,当应用程序在4英寸的iPhone上运行时,它会抛出一个异常,说“找不到…的视图”。那么这是一个bug还是我做错了什么 另外,MvxTouchFormFactor.Phone是否默认以4英寸i
另外,MvxTouchFormFactor.Phone是否默认以4英寸iPhone为目标,还是需要使用MvxTouchFormFactor.TallPhone明确以4英寸iPhone为目标?此功能的实现包括:
public MvxTouchFormFactor FormFactor
{
get
{
switch (UIDevice.CurrentDevice.UserInterfaceIdiom)
{
case UIUserInterfaceIdiom.Phone:
if (UIScreen.MainScreen.Bounds.Height*UIScreen.MainScreen.Scale >= 1136)
return MvxTouchFormFactor.TallPhone;
return MvxTouchFormFactor.Phone;
case UIUserInterfaceIdiom.Pad:
return MvxTouchFormFactor.Pad;
default:
throw new ArgumentOutOfRangeException();
}
}
}
因此-您可以看到,Phone
与TallPhone
我想,在这里最简单的方法可能是编写自己的条件属性-这非常容易-只需看看
mvxformfactorspecificatAttribute
是如何定义的,并将其用作自己属性的基础:
[AttributeUsage(AttributeTargets.Class)]
public class MyFormFactorSpecificAttribute
: MvxConditionalConventionalAttribute
{
public override bool IsConditionSatisfied
{
get
{
// put your logic here - could use Mvx.Resolve<IMvxTouchPlatformProperties>()
return TODO;
}
}
}
[AttributeUsage(AttributeTargets.Class)]
公共类MyFormFactorSpecificCatAttribute
:MvxConditionalConventionalAttribute
{
满足公共覆盖布尔条件
{
得到
{
//将逻辑放在这里-可以使用Mvx.Resolve()
返回待办事项;
}
}
}
如果您认为您的属性对其他用户有好处,我肯定会欢迎潜在的请求返回MvvmCross进行改进
或者,您可以简单地将冲突视图标记为
非常规
,并在设置过程中手动将它们添加到视图模型查找中
对不起,这方面有些混乱。e、 g.我们已经将
MvxTouchPlatformProperties
标记为过时,因为我们预计/希望这种功能在将来某个时候会被CrossCore
功能取代