【问题标题】:Can I use a bool type with XAML X:Static?我可以在 XAML X:Static 中使用 bool 类型吗?
【发布时间】:2021-03-27 00:08:17
【问题描述】:

我正在尝试使菜单项的可见性取决于 DEBUG 宏。 (这是一个调试菜单项,因此不应在发布版本中可见。)我正在尝试遵循 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/xaml/xaml-basics/xaml-markup-extensions 中的 x:Static 示例

我的 AppShell 类中有以下内容:

namespace myappname
{
    public partial class AppShell : Xamarin.Forms.Shell
    {

#if DEBUG
        public static readonly bool IsDebug = true;
#else
        public static readonly bool IsDebug = false;
#endif

在 AppShell XAML 中,我尝试了多种变体

<FlyoutItem Title="Debug" Icon="DebugCheckedTests_16x.png" IsVisible="{x:Static local:bool.IsDebug}">

但我尝试过的所有操作都给我错误 XFC0000 Cannot resolve type "bool" -- 或其他一些错误。

我是否偏离了基础,或者 bool 不是 x:Static 的有效类型?如何编码?

【问题讨论】:

    标签: xaml xamarin.forms markup-extensions


    【解决方案1】:

    从您linked 的文档中,您要完成的工作属于“公共静态字段”,因此您需要指定定义字段IsDebug 的类,在文档示例中,类名称为@ 987654323@,这不是“布尔”类型的问题,您可以使用任何类型,只要它是属性所期望的类型即可。

    xmlns:localRoot="clr-namespace:myappname"
    
    <FlyoutItem Title="Debug" Icon="DebugCheckedTests_16x.png"
                IsVisible="{x:Static localRoot:AppShell.IsDebug}>
    

    【讨论】:

    • 我认为这是我尝试过的众多变体之一。产生 XFC0000 无法解析类型“AppShell”。
    • 您是否正确包含 xaml 命名空间“本地”? xmlns:local="clr-namespace:YourNameSpace"YourNameSpace 是定义 AppShell 类的命名空间。
    • 我更新了主帖中的代码示例以显示 AppShell 类及其命名空间。
    • XAML Shell 是相关 FlyoutItem 的父级,包括 xmlns:local="clr-namespace:myappname.Views"。
    • 伟大的思想都一样!我也注意到了。我以不同的方式解决了它。我将#if DEBUG/static bools 移动到相关的视图页面类中,并在 FlyoutItem 中将其引用为 local:DebugPage.IsDebug。谢谢。
    猜你喜欢
    • 2014-07-03
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 2016-10-02
    • 1970-01-01
    • 2010-12-28
    相关资源
    最近更新 更多