此功能的实现在:
外形尺寸本身定义为:
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
我怀疑您在这里最简单的方法可能是编写自己的条件属性 - 这很容易做到 - 只需查看如何MvxFormFactorSpecificAttribute
定义并将其用作您自己的属性的基础:
[AttributeUsage(AttributeTargets.Class)]
public class MyFormFactorSpecificAttribute
: MvxConditionalConventionalAttribute
{
public override bool IsConditionSatisfied
{
get
{
// put your logic here - could use Mvx.Resolve<IMvxTouchPlatformProperties>()
return TODO;
}
}
}
如果您认为您的属性对其他用户有好处,我肯定愿意接受潜在的拉取请求,返回到 MvvmCross 以进行改进。
或者,您可以简单地将冲突视图标记为Unconventional
,并可以在查看期间手动将它们添加到 View-ViewModel 查找中Setup
抱歉,这方面有些混乱。例如,我们已经将其标记MvxTouchPlatformProperties
为过时,因为我们确实预期/希望这种功能将CrossCore
在未来某个时候被功能取代。