UWP AcrylicBrush向后兼容最低版本14393(周年纪念更新)

时间:2018-01-27 14:08:28

标签: c# .net xaml uwp backwards-compatibility

我正在开发我的UWP应用程序。我成立了:

  • 目标版本: 16299
  • 最低版本: 14393

我使用了一些亚克力布。因为它们需要16299版本,所以我有两个带刷子的文件:

  • Styles / Brushes.xaml (16299以下 - 仅限SolidColorBrushes)
  • 样式/秋季/ Brushes.xaml (16299及以上 - SolidColorBrushes和AcrylicBrushes)

我在App.xaml.cs中使用下面的代码

private void SetupStyles() {
    var prefix = PlatformApiService.IsAcrylicBrushAvailable ? "Fall/" : string.Empty;
    var brushUri = new Uri($"ms-appx:///Styles/{prefix}Brushes.xaml", UriKind.Absolute);
    Current.Resources.MergedDictionaries.Add(new ResourceDictionary { Source = brushUri });
}

当最小版本为 10586 时,一切正常,但 14393 我的应用无法构建,因为:

  

键入' Windows.UI.Xaml.Media.AcrylicBrush'是根据合同定义的Windows.Foundation.UniversalApiContract'版本' 5.0.0.0',但目标最低版本的合同版本是' 3.0.0.0'!

     

会员' BackgroundSource'在类型' Windows.UI.Xaml.Media.IAcrylicBrush'是根据合同定义的Windows.Foundation.UniversalApiContract'版本' 5.0.0.0',但目标最低版本的合同版本是' 3.0.0.0'!

     

会员' FallbackColor' on type' Windows.UI.Xaml.Media.IXamlCompositionBrushBase'是根据合同定义的Windows.Foundation.UniversalApiContract'版本' 4.0.0.0',但目标最低版本的合同版本是' 3.0.0.0'!

我无法使用Conditional XAML,因为它需要15063版本。我该怎么办?

1 个答案:

答案 0 :(得分:3)

您可以在XAML中创建资产SolidColorBrushes,然后将它们覆盖到C#中的Acrylic画笔

if (ApiInformation.IsTypePresent("Windows.UI.Xaml.Media.AcrylicBrush"))
{
                    var brush= ((SolidColorBrush)App.Current.Resources["ExampleBrush"]).Color;
                    App.Current.Resources["ExampleBrush"] = new AcrylicBrush()
                    {
                        TintOpacity = ,
                        TintColor = brush,
                        FallbackColor = brush,
                        BackgroundSource = AcrylicBackgroundSource.HostBackdrop
                    };
}