You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:46:39