仅在检测到Fall Creators Update时使用某种样式

时间:2017-10-12 10:52:55

标签: c# .net uwp uwp-xaml

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

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

这将有效,但当然仅适用于安装了Fall Creators Update的设备。如何为所有以前版本的W10禁用此功能?

我知道当我想检查特定的Windows Api时,我可以在代码隐藏中使用.IsApiPresent(),但在这种情况下,这似乎不是首选/推荐的解决方案,而且我&#39 ; d为此坚持只为XAML。在C#中执行此操作需要在代码隐藏中引用具有该样式的每个控件,并且如果它存在则手动分配样式。我非常确定这不是当今时代的最佳解决方案,您可以在XAML中设置响应式和动画式布局。此外,如果按钮位于ListView.ItemTemplate中,只需访问每个控件就需要几行实线。更不用说检查本身了

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

编辑: 结果证明这是可能的,我完全错过了一些东西。有条件的XAML可以轻松完成,并不是所有考虑因素都很复杂。只需在文件中设置自定义命名空间(指向与&#39; root&#39;命名空间相同的资源,只需使用`IsApiContractPresent&#34;最后检查。是的,它 可以在XAML中使用它。

设置自定义命名空间后,您可以指定仅在最终用户设备上存在特定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" ... />

这将导致按钮仅在具有Fall Creators Update的PC上显示Reveal,并且以前的版本不会引发错误。

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

你们显然喜欢你的downvote按钮。

1 个答案:

答案 0 :(得分:1)

原来这是可能的,我完全错过了一些东西。有条件的XAML可以轻松完成,并不是所有考虑因素都很复杂。只需在文件中设置自定义命名空间(指向与&#39; root&#39;命名空间相同的资源,只需使用`IsApiContractPresent&#34;最后检查。是的,它 可以在XAML中使用它。

设置自定义命名空间后,您可以指定仅在最终用户设备上存在特定API时才应用的属性。例如:

{{1}}

这将导致按钮仅在具有Fall Creators Update的PC上显示Reveal,并且以前的版本不会引发错误。

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