【问题标题】:Page title not showing up, why not?页面标题不显示,为什么不显示?
【发布时间】:2017-11-24 10:37:47
【问题描述】:

我正在尝试通过在我的代码中执行以下操作来设置页面标题:this.Title = "string";,但它根本不会显示。图片是为了清楚起见,我猜。红色部分是文本应该在的位置。

编辑:好的,首先抱歉缺少信息,但不确定显示什么,不显示什么。我正在尝试根据我从消息中获得的项目名称来更改标题(我认为没有收到消息,我认为这是因为这不是我唯一的消息)我正在使用。现在正在研究它,谢谢你们)。

消息: MessagingCenter.Subscribe<ZonePage, string>(this, "loginname", (s, arg) => { name = arg; this.Title = name; });

xaml 标记:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="MobileApp.LoginPage">
<StackLayout BackgroundColor="#15a4fa">
    <StackLayout VerticalOptions="CenterAndExpand" Padding="50, 0, 50, 50">
        <Image Source="logotext.png" />
    </StackLayout>

    <StackLayout BackgroundColor="White" VerticalOptions="StartAndExpand" Padding="25, 20, 25, 20">
        <Entry x:Name="userNameEntry" TextColor="Black" Placeholder="Username" HorizontalOptions="Fill"/>
        <Entry x:Name="passwordEntry" IsEnabled="True" TextColor="Black" IsPassword="True" Placeholder="Password" HorizontalOptions="Fill"/>
        <StackLayout Orientation="Horizontal">
            <Switch x:Name="Remember" IsToggled="False" HorizontalOptions="Center"/>
            <Label Text="Remember me" TextColor="Black" Font="18" HorizontalOptions="Start"/>
        </StackLayout>
    </StackLayout>

    <StackLayout Padding="75, 0, 75, 50" VerticalOptions="Center">
        <Picker x:Name="picker"  TextColor="White" Title="Select an Identity Source">
            <Picker.Items>
                <!-- Items added dynamically from xaml.cs -->
            </Picker.Items>
        </Picker>
    </StackLayout>

    <StackLayout Padding="0, 0, 0, 0" VerticalOptions="StartAndExpand" HorizontalOptions="Center" Orientation="Horizontal">
        <Button Text="Login" BackgroundColor="White" TextColor="Black" VerticalOptions="Start" HorizontalOptions="Center" Clicked="OnLogin"/>
    </StackLayout>
</StackLayout>

【问题讨论】:

  • 你必须发布更多的代码,而不仅仅是this.Title = "string";...
  • @maccettura 这就是我要做的全部尝试,整行代码是MessagingCenter.Subscribe&lt;ZonePage, string&gt;(this, "loginname", (s, arg) =&gt; { name = arg; this.Title = name; });
  • 发布您的 xaml 标记
  • 您订阅了未在问题中填写的内容。请发布您的发布/订阅代码
  • 你确定消息正在接收,并且参数设置正确吗?如果您在页面已经显示后尝试设置标题,您可能需要在 UI 线程上执行

标签: c# xaml xamarin.forms


【解决方案1】:

在接收消息的方法中设置一个断点,以确保你得到一些东西。如果是这样,请像这样修改您的代码:

MessagingCenter.Subscribe<ZonePage, string>(this, "loginname", (s, arg) => { 
    name = arg;

    Device.BeginInvokeOnMainThread (() => {
        this.Title = name;
    });
});

这将更新您的 UI 线程,在这种情况下可能需要它。

【讨论】:

    【解决方案2】:

    尝试将您的页面设置为 App.xaml.cs 级别的 NavigationPage,在 InitializeComponent 之后:

    InitializeComponent();
    
    MainPage = new NavigationPage(new LoginPage());
    

    【讨论】:

      【解决方案3】:

      您可能将标题设置为错误的页面。 根据我从您的图片中了解到的情况,您正在使用 MasterDetail 页面。 如果我是正确的,这个 MasterDetailPage 将您的 LoginPage 保存在您尝试更改标题的位置。 但是,不要尝试更改 LoginPage 的标题,而是尝试更改将 LoginPage 保存为 Detail 的 MasterDetailPage 的标题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-09
        • 1970-01-01
        • 2014-07-20
        • 2011-09-22
        • 2017-01-22
        • 2017-11-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多