Xamarin.Form问题的流畅设计

问题描述 投票:4回答:2

我正在努力让Fluent Design在我的Xamarin.Forms UWP App上运行。我尝试过使用渲染器,覆盖样式的不同方法,但它们都不起作用。

丙烯酸刷子总是回落到FallbackColor。

Setup:

目标版本:Windows 10(1803)最低版本:Windows 10 Fall Creators更新(16299)。

而且我也在检查

Windows.Foundation.Metadata.ApiInformation.IsTypePresent(“Windows.UI.Xaml.Media.AcrylicBrush”)可用。

使用任何预定义的丙烯酸笔刷会导致“找不到具有名称/密钥SystemControlChromeLowAcrylicWindowBrush的资源”。

AcrylicBrush&Splitview风格:

<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);
        }

    }
}
    ```


c# xamarin.forms uwp xamarin.uwp
2个回答
1
投票

请看看Link

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


0
投票

您的AcrylicBrush和风格在我身边运作良好。请检查“Winbdows设置 - >个性化 - >颜色 - >更多选项 - >透明效果”。您需要打开透明效果。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.