【发布时间】:2018-12-20 23:53:48
【问题描述】:
我的 UWP 应用程序的目标最小版本为 1703,最大版本为 1803。它还使用 AcrylicBrush,直到 1709 年才可用。我正在尝试使用条件 XAML 在当前版本支持时创建 AcrylicBrush (即版本为 1709 或更高版本)。
下面我有一个填充定义了两次的矩形,一次用于 1709 之前的任何内容,一次用于 1709 及更高版本。此代码有效。
编辑:
下面的代码应该是 Version1803 和 Not1803。拉斐尔的回答是正确的; Windows 10 Mobile 1709 会因此崩溃……但 1703 不应该……所以为了简单起见,只需将“1709”替换为“1803”即可。话虽如此,有谁知道它为什么会在 1703 上崩溃?
--编辑结束。
xmlns:Version1709="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract,5)"
xmlns:Not1709="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractNotPresent(Windows.Foundation.UniversalApiContract,5)"
<Rectangle x:Name="AcrylicRectangle">
<Version1709:Rectangle.Fill>
<AcrylicBrush Opacity="0.5"></AcrylicBrush>
</Version1709:Rectangle.Fill>
<Not1709:Rectangle.Fill>
<SolidColorBrush Color="Red" Opacity="0.5"></SolidColorBrush>
</Not1709:Rectangle.Fill>
</Rectangle>
这是独家新闻:1709 和更新的版本有一个透明的矩形(因为没有设置颜色),而 1709 之前的版本有一个红色的矩形,到目前为止一切都很好。这就是问题开始的地方。你会注意到我在 AcrylicBrush 中定义的唯一属性是不透明度;任何其他已定义的属性,如 TintColor、TintOpacity 等,都会使 1703 Mobile 上的应用程序崩溃。我尝试了许多不同的变体,但它们都有相同的问题:
<AcrylicBrush Version1709:TintColor="Red" Opacity="0.5"></AcrylicBrush>
<AcrylicBrush TintColor="Red" Opacity="0.5"></AcrylicBrush>
<Version1709:AcrylicBrush Version1709:TintColor="Red" Opacity="0.5"></Version1709:AcrylicBrush>
<Version1709:AcrylicBrush TintColor="Red" Opacity="0.5"></Version1709:AcrylicBrush>
从上面的四个 AcrylicBrushes 中,我在移动设备上的 1703 上运行时收到此错误:
激活 Windows 应用商店应用程序“a77e7506-7031-4935-ad70-ef56585020de_h83rr06hb5xc0!App”失败,并出现错误“Windows 无法与目标应用程序通信。这通常表明目标应用程序的进程已中止。更多信息可在“输出”窗口的“调试”窗格中获得(调试->Windows->输出)'。 程序“[6928] [UWPAppName].exe”已退出,代码为 -1073741189 (0xc000027b)。
我做错了什么?
编辑 当我说 1709 之前的版本时,只需要 1703,因为这是最低目标。低于 1703(内部版本 15063)的版本不支持条件 XAML,因此这不是问题。
【问题讨论】:
标签: xaml uwp conditional