例如,我想将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按钮。
答案 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