仅在检测到秋季创建者更新时使用特定样式



例如,我想将ButtonRevealStyle应用于我的按钮:

<Button Style="{StaticResource ButtonRevealStyle}"  Grid.Column="1" Width="38" ... />

这将起作用,但当然只适用于安装了秋季创建者更新的设备。如何为所有以前版本的W10禁用此功能?

我知道当我想检查特定的WindowsApi时,我可以在代码后面使用.IsApiPresent(),但在这种情况下,这似乎不是首选/推荐的解决方案,我想只使用XAML。在C#中执行此操作需要在代码隐藏中引用每个具有该样式的控件,并手动分配样式(如果存在)。我确信这不是当今时代的最佳解决方案,在这个时代,你可以只在XAML中设置响应和动画布局。此外,如果按钮在ListView.ItemTemplate中,那么仅访问每个控件就需要几行代码。更不用说支票本身

有可能吗?我是不是错过了什么?

编辑:事实证明这是可能的,我完全错过了一些东西。条件XAML可以很容易地完成,并不是所有考虑的事情都那么复杂。这只是在文件中设置一个自定义命名空间的问题(指向与"根"命名空间相同的资源,只需在末尾检查"IsApiCompractPresent"即可。是的,可以在XAML中使用它。

设置自定义名称空间后,您可以指定只有在End-User的设备上存在特定API时才会应用的属性。示例:

xmlns:fcu="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract,5)"
...
<Button fcu:Style="{StaticResource ButtonRevealStyle}"  Grid.Column="1" Width="38" ... />

这将导致按钮只在带有秋季创建者更新的电脑上显示,并且以前的版本不会出现错误。

更多信息:https://learn.microsoft.com/en-us/windows/uwp/debug-test-perf/conditional-xaml

你们这些人显然有点太喜欢你们的否决按钮了。

事实证明这是可能的,我完全错过了一些东西。条件XAML可以很容易地完成,并不是所有考虑的事情都那么复杂。这只是在文件中设置一个自定义命名空间的问题(指向与"根"命名空间相同的资源,只需在末尾检查"IsApiCompractPresent"即可。是的,可以在XAML中使用它。

设置自定义名称空间后,您可以指定只有在End-User的设备上存在特定API时才会应用的属性。示例:

xmlns:fcu="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract,5)"
...
<Button fcu:Style="{StaticResource ButtonRevealStyle}"  Grid.Column="1" Width="38" ... />

这将导致按钮只在带有秋季创建者更新的电脑上显示,并且以前的版本不会出现错误。

更多信息:https://learn.microsoft.com/en-us/windows/uwp/debug-test-perf/conditional-xaml

最新更新