C# 流畅的Xamarin设计。表单发布

C# 流畅的Xamarin设计。表单发布,c#,xamarin.forms,uwp,xamarin.uwp,C#,Xamarin.forms,Uwp,Xamarin.uwp,我正试图让流畅的设计在我的Xamarin.Forms UWP应用程序上运行。我尝试过使用渲染器的不同方法,覆盖样式,但都不起作用 亚克力画笔总是会退回到备用颜色 设置: 目标版本:Windows 10(1803) 最低版本:Windows 10秋季创建者更新(16299) 我也在检查 Windows .Funtual.Media.ApIdvices。IsTypePresent(“Windows .UI.xAML.Media.AcrylicBrush”)可用。 使用任何预定义的丙烯酸笔刷都会导致

我正试图让流畅的设计在我的Xamarin.Forms UWP应用程序上运行。我尝试过使用渲染器的不同方法,覆盖样式,但都不起作用

亚克力画笔总是会退回到备用颜色

设置: 目标版本:Windows 10(1803) 最低版本:Windows 10秋季创建者更新(16299)

我也在检查

Windows .Funtual.Media.ApIdvices。IsTypePresent(“Windows .UI.xAML.Media.AcrylicBrush”)可用。 使用任何预定义的丙烯酸笔刷都会导致“找不到名为/Key SystemControlChromeLowAcrylicWindowBrush的资源”

AcrylicBrush和Splitview样式:

自定义渲染器:
[程序集:导出呈现程序(typeof(母版页)、typeof(母版页呈现程序))]
命名空间MasterDetailPageNavigation.UWP
{
类MasterPageRenderer:PageRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(e.OldElement!=null | | Element==null)
{
返回;
}
尝试
{
If(Windows .Frase.Media.ApIdValue.IsTypePresent(“Windows .ui.xAML.Media.XamlCompositionBrushBase”))
{
Windows.UI.Xaml.Media.acryicbrush myBrush=新的Windows.UI.Xaml.Media.acryicbrush();
myBrush.BackgroundSource=Windows.UI.Xaml.Media.AcrylicBackgroundSource.hostbackground;
myBrush.TintColor=Windows.UI.Color.FromArgb(255200200200);
myBrush.TintOpacity=0.2;
背景=我的画笔;
}
其他的
{
SolidColorBrush myBrush=新的SolidColorBrush(Windows.UI.Color.FromArgb(255、240、240、240));
背景=我的画笔;
}
}
捕获(例外情况除外)
{
系统.诊断.调试.写线(ex);
}
}
保护覆盖Windows.Foundation.Size ArrangeOverride(Windows .Fuffial.SimuleFielalSead)
{
返回基数。安排覆盖(最终化);
}
}
}
```

你的丙烯刷和风格在我这边很好。请检查“Winbdows设置->个性化->颜色->更多选项->透明度效果””。您需要打开透明度效果


请看一下


这应该能解决你的问题。您可以通过将meresources.xaml添加到项目资源中来解决此问题。

透明度效果将在我的开发人员计算机上打开,其他系统应用程序都是透明的请运行并检查样式->丙烯酸页面,看看是否可以看到丙烯酸效果。我已经构建并运行了示例,丙烯酸效果工作正常。因此,您可以创建一个新的空白UWP项目,并将代码示例代码复制到此项目以进行故障排除。该问题似乎是我的特定项目,因为我无法用新XF项目重现该问题。最让我沮丧的是,像SystemControlAcrylicWindowBrush这样的预定义笔刷没有找到,应用程序崩溃了。请看一下这个项目:谢谢!这解决了我的问题!你能给我一个答案让我奖励你吗?当然,这是个好消息
<media:AcrylicBrush x:Key="HostBackdropBrush"
                    BackgroundSource="HostBackdrop"
                    TintColor="White"
                    TintOpacity="0.4" 
                    FallbackColor="WhiteSmoke" />


  <Style TargetType="SplitView">
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        <Setter Property="VerticalContentAlignment" Value="Stretch"/>
        <Setter Property="OpenPaneLength" Value="{ThemeResource SplitViewOpenPaneThemeLength}"/>
        <Setter Property="CompactPaneLength" Value="{ThemeResource SplitViewCompactPaneThemeLength}"/>
        <Setter Property="PaneBackground" Value="{StaticResource HostBackdropBrush}"/>
    </Style>

[assembly: ExportRenderer(typeof(MasterPage), typeof(MasterPageRenderer))]
namespace MasterDetailPageNavigation.UWP
{
    class MasterPageRenderer : PageRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
        {
            base.OnElementChanged(e);
            if (e.OldElement != null || Element == null)
            {
                return;
            }

            try
            {
                if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.UI.Xaml.Media.XamlCompositionBrushBase"))
                {
                    Windows.UI.Xaml.Media.AcrylicBrush myBrush = new Windows.UI.Xaml.Media.AcrylicBrush();
                    myBrush.BackgroundSource = Windows.UI.Xaml.Media.AcrylicBackgroundSource.HostBackdrop;
                    myBrush.TintColor = Windows.UI.Color.FromArgb(255, 200, 200, 200);
                    myBrush.TintOpacity = 0.2;

                    Background = myBrush;
                }
                else
                {
                    SolidColorBrush myBrush = new SolidColorBrush(Windows.UI.Color.FromArgb(255, 240, 240, 240));

                    Background = myBrush;
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex);
            }
        }

        protected override Windows.Foundation.Size ArrangeOverride(Windows.Foundation.Size finalSize)
        {
            return base.ArrangeOverride(finalSize);
        }

    }
}
    ```