UWP应用移动端隐藏多窗口按钮:如何通过ApiInformation判断设备
解决UWP手机端隐藏多窗口按钮的问题
嘿,我来帮你搞定这个UWP手机端隐藏多窗口按钮的问题!你说得太对了——UWP开发里真的要尽量避开Device类做设备判断,微软一直推荐用ApiInformation来做功能/API的存在性检测,这才是符合UWP自适应设计的最佳实践。针对你的需求,我给你几个靠谱的实现方式:
方法一:检测手机专属API
手机设备会自带一些PC端没有的API,比如你提到的Windows.Phone.UI.Input.HardwareButtons,还有手机特有的StatusBar,我们可以通过检测这些API是否存在来判断当前是不是手机环境:
using Windows.Foundation.Metadata; using Windows.UI.Xaml; // 在页面加载或按钮初始化时执行这段代码 if (ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons") || ApiInformation.IsTypePresent("Windows.UI.ViewManagement.StatusBar")) { // 隐藏打开第二个窗口的按钮 OpenSecondWindowButton.Visibility = Visibility.Collapsed; }
这种方式的好处是,它不直接判断设备类型,而是基于设备具备的功能来做逻辑,更符合UWP的跨设备设计理念。
方法二:直接检测设备家族(更直观)
如果你想更精准地锁定移动设备,也可以用AnalyticsInfo.VersionInfo.DeviceFamily——虽然它不是ApiInformation,但这是微软官方推荐的设备家族检测方式,比老旧的Device类靠谱多了:
using Windows.System.Profile; // 获取当前设备家族 string deviceFamily = AnalyticsInfo.VersionInfo.DeviceFamily; if (deviceFamily == "Windows.Mobile") { OpenSecondWindowButton.Visibility = Visibility.Collapsed; }
额外小建议:结合多窗口功能支持检测
如果你其实是想在不支持多窗口的设备上隐藏按钮(哪怕你现在说手机端运行正常,难保以后遇到低版本不支持的机型),可以同时检测多窗口功能的API:
using Windows.Foundation.Metadata; using Windows.UI.Xaml; // 检测当前设备是否支持多窗口功能 bool supportsMultipleViews = ApiInformation.IsMethodPresent( "Windows.ApplicationModel.Core.CoreApplication", "CreateNewView"); if (!supportsMultipleViews) { OpenSecondWindowButton.Visibility = Visibility.Collapsed; }
这样一来,不管是手机还是其他不支持多窗口的设备,按钮都会自动隐藏,逻辑更鲁棒。
你可以把这些代码放在页面的Loaded事件里,或者用XAML绑定+转换器的方式来实现,都能轻松达到需求~
内容的提问来源于stack exchange,提问作者A.K.
相关产品推荐
相关产品推荐

