Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 移除shell操作栏下的阴影Xamarin Forms Android_C#_Xamarin_Xamarin.forms - Fatal编程技术网

C# 移除shell操作栏下的阴影Xamarin Forms Android

C# 移除shell操作栏下的阴影Xamarin Forms Android,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,我很难找到解决方案,甚至文档站点上声明的属性也不起作用。这是文档中的示例: <ContentPage ... Shell.NavBarHasShadow="true"> ... </ContentPage> ... 当我尝试将属性添加到ContentPage时,它返回一个错误 严重性代码说明项目文件行抑制状态 错误XLS0415在中找不到可附加属性“Hassadow” 键入“Shell”。LoanApp2 LoanHistory.x

我很难找到解决方案,甚至文档站点上声明的属性也不起作用。这是文档中的示例:

<ContentPage ...
             Shell.NavBarHasShadow="true">
    ...
</ContentPage>

...
当我尝试将属性添加到ContentPage时,它返回一个错误

严重性代码说明项目文件行抑制状态 错误XLS0415在中找不到可附加属性“Hassadow” 键入“Shell”。LoanApp2 LoanHistory.xaml 8

这是my MainPage.xaml:

<?xml version="1.0" encoding="utf-8" ?>
<Shell xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:local="clr-namespace:LoanApp2.Views"
             mc:Ignorable="d"
             x:Class="LoanApp2.MainPage" BackgroundColor="#62bef0" Title="Dylan Villaruel">

    <FlyoutItem Title="MyTabApp" Shell.TabBarIsVisible="False" FlyoutDisplayOptions="AsMultipleItems">
        <ShellContent Title="Loan History" IsTabStop="True" ContentTemplate="{DataTemplate local:LoanHistory}"/>
        <ShellContent Title="Amount Loanable" IsTabStop="True" ContentTemplate="{DataTemplate local:AmountLoanable}"/>
    </FlyoutItem>

</Shell>

外壳内容都被ContentPage包装为根标记

@e700867

您需要创建自定义渲染器以从shell中的导航中移除阴影,希望下面的代码能够帮助您:

public class CustomShellRenderer : ShellRenderer
{
    public CustomShellRenderer(Context context) : base(context)
    {
    }

    protected override IShellToolbarAppearanceTracker CreateToolbarAppearanceTracker()
    {
        return new CustomShellToolbarAppearanceTracker(this);
    }
}

internal class CustomShellToolbarAppearanceTracker : IShellToolbarAppearanceTracker
{
    private CustomShellRenderer customShellRenderer;

    public CustomShellToolbarAppearanceTracker(CustomShellRenderer customShellRenderer)
    {
        this.customShellRenderer = customShellRenderer;
    }

    public void Dispose()
    {

    }

    public void ResetAppearance(Toolbar toolbar, IShellToolbarTracker toolbarTracker)
    {

    }

    public void SetAppearance(Toolbar toolbar, IShellToolbarTracker toolbarTracker, ShellAppearance appearance)
    {

        toolbar.SetBackgroundColor(Android.Graphics.Color.Green);
        var viewParent = (Android.Support.Design.Widget.AppBarLayout)toolbar.Parent;            
        viewParent.SetElevation(0.0f);
    }
}
谢谢

@e700867

您需要创建自定义渲染器以从shell中的导航中移除阴影,希望下面的代码能够帮助您:

public class CustomShellRenderer : ShellRenderer
{
    public CustomShellRenderer(Context context) : base(context)
    {
    }

    protected override IShellToolbarAppearanceTracker CreateToolbarAppearanceTracker()
    {
        return new CustomShellToolbarAppearanceTracker(this);
    }
}

internal class CustomShellToolbarAppearanceTracker : IShellToolbarAppearanceTracker
{
    private CustomShellRenderer customShellRenderer;

    public CustomShellToolbarAppearanceTracker(CustomShellRenderer customShellRenderer)
    {
        this.customShellRenderer = customShellRenderer;
    }

    public void Dispose()
    {

    }

    public void ResetAppearance(Toolbar toolbar, IShellToolbarTracker toolbarTracker)
    {

    }

    public void SetAppearance(Toolbar toolbar, IShellToolbarTracker toolbarTracker, ShellAppearance appearance)
    {

        toolbar.SetBackgroundColor(Android.Graphics.Color.Green);
        var viewParent = (Android.Support.Design.Widget.AppBarLayout)toolbar.Parent;            
        viewParent.SetElevation(0.0f);
    }
}

谢谢

您可以在页面的代码隐藏中添加Shell.setNavBarHassadow(此,false)。例如:

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class HomeView : ContentPage
{
    public HomeView()
    {
        InitializeComponent();

        Shell.SetNavBarHasShadow(this, false);
    }
}

您可以在页面的codebehind中添加Shell.setNavBarHassadow(此,false)。例如:

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class HomeView : ContentPage
{
    public HomeView()
    {
        InitializeComponent();

        Shell.SetNavBarHasShadow(this, false);
    }
}

我可以在Shell项目中添加for Shell.navbarhassadow=“true”,请检查您的Xamarin.Forms版本,我的版本是4.4.0。991265@CherryBu-MSFT如何检查Xamarin.Forms版本?它在我的about页面上看不到Xamarin.Forms,只有另一个Xamarin和Xamarin。*没关系,您实际上在visual studio的about部分看不到该版本。您必须检查nuget包管理器。我说我可以为Shell.navbarhassadow=“true”添加版本4.3I。在Shell项目中,请检查您的Xamarin.Forms版本,我的版本是4.4.0。991265@CherryBu-MSFT如何检查Xamarin.Forms版本?它在我的about页面上看不到Xamarin.Forms,只有另一个Xamarin和Xamarin。*没关系,您实际上在visual studio的about部分看不到该版本。您必须检查nuget包管理器。我的版本是4.3