设计约定
普通页面可继承 BasePage,提供了许多工具函数,详情请查看文档。
前端模型类可考虑继承 BaseObject,提供了一些工具函数,详情请查看文档。
前端配置项类可继承 PreferenceObject<T>。
示例可参考
Fleet.Mobile.WorkOrder.WorkOrderFilter类的实现。公共常量请考虑放在
Fleet.Mobile.Constants静态类中。列表类页面均可继承 SearchingPage<T>。
详情参考 列表页面范例 文档。
通过实现抽象函数 DoGetDataAsync 来组织数据(函数内不需要捕获异常),根据是否需要搜索/排序功能实现虚函数 DoSearch 和 DoSort。
调用顺序为
DoGetDataAsync>DoSearch>DoSort。提供以下方法触发数据刷新:
IsLoading = True: 若子类含有 RefreshView,且绑定了 RefreshCommand 则可以通过该属性赋值主动触发数据刷新。
若未带有 RefreshView,则需要把 CostTime 覆盖为 0,或重写 OnNavigatedTo 以避免页面打开时无法获取数据。
OnRefreshInternal(bool):除了不把
IsLoading设为 True 以外和上面的效果一样。OnSearchInternal(string?):触发从
DoSearch函数开始的逻辑。OnSortInternal():仅触发
DoSort后呈现数据。
具体逻辑参考
Container/AssetsPage.xaml见的实现,Sort 则参考WorkOrder/WorkOrdersPage.xaml的实现。弹出类型的页面请通过继承 DialogPopup<T> 来实现。
页面调用时在 UI 线程上实例化
Popup<T>,并通过this.ShowPopupAsync<T>扩展方法来显示。
示例可参考
Fleet.Mobile.Inspection.PageSelectorPopup类的实现,xaml 页面的话参考Containers/Popup/ActionPopup.xaml编写。Containers 文件夹下包含可复用的控件。(假设 XML-namespace 为 c)
<c:ElementBorder/>用来显示横向分割线。<c:ElementMask/>用来充当背景遮罩层,提供Clicked事件。<c:ElementNetworkFailed/>用来显示网络异常的标识,一般搭配 INetworkIndicator 接口的属性使用。<c:MaskIndicator IsRunning="{Binding IsLoading}"/>用来显示带进度标识的遮罩层。<c:SearchView/>搜索框。<c:SwitchView/>带文字显示的开关切换控件。设置项类
<c:SwitchSettingsView/>开关类型的设置项。<c:EntrySettingsView/>单行输入框类型的设置项。<c:EditorSettingsView/>多行数据框类型的设置项。<c:DatePickerSettingsView/>日期选择类型的设置项。<c:PickerSettingsView/>选择项类型的设置项。<c:EntryPickerSettingsView/>文本框+选择项类型的组合设置项。<c:DropdownSettingsView/>弹出页面选择的设置项。<c:EntryDropdownSettingsView/>文本框+弹出页面选择的组合设置项。<c:SettingsView/>自定义设置项,可以参考WorkOrder/EditWorkOrderPage.xaml中的 Scheduling 设置项。详情参考 设置类页面组成范例 文档。
可复用页面
SignaturePage签名调用该页面实现,调用方需要实现 ISignaturePage 接口。签名完成时会在 UI 线程上调用接口的 SetSignatureBytesAsync 方法。
Media.ImageViewPage图片查看页面。Media.VideoPlayerPage视频查看页面。Media.EditPicturePage图片编辑页面。媒体相关的辅助函数请参考 MediaHelper 文档。
扩展类型(假设 XML-namespace 为 m)
{m:Text FLT_XXXXXX, Default='Default Text'}多语言资源扩展,内容属性为资源 ID,
Default属性为默认资源内容。{m:FontImage {x:Static m:Icons.Refresh}, FontFamily=FontAwesomeSolid, Size=20}字体图形源扩展,内容属性为显示字符串,
FontFamily属性为字体,默认值为"FontAwesomeSolid",可设置为"FontAwesome"、"FontAwesomeLight",Size属性为文字大小,默认值为20。后两个属性非必须。UIExtensions 为 UI 类型扩展类,具体可参考文档说明。
ExceptionExtensions 为异常类型扩展类,提供异常判断、异常显示等扩展方法,具体参考文档说明。
启动安全任务推荐统一使用 StartSafeTaskAsync 扩展方法。
Extensions 为通用扩展类,提供延时等扩展方法,具体参考文档说明。