页面标题没有显示,为什么不呢?

时间:2017-06-21 13:27:57

标签: c# xaml xamarin.forms

我正在尝试通过在我的代码中执行此操作来设置页面标题:this.Title = "string";但它根本不会显示。我想这是为了清晰起见。红色部分是文本的位置。

enter image description here

编辑:好吧首先抱歉缺少信息,但不确定要显示什么,什么不显示。我正在尝试根据我从消息中得到的项目名称更改标题(我不认为消息正在接收,我认为这是因为这不是我唯一的一个'现在正在调查,谢谢你们。)

消息: 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>

3 个答案:

答案 0 :(得分:2)

在接收邮件的方法中设置断点,以确保获得某些内容。如果是这样,请修改您的代码:

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

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

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

答案 1 :(得分:0)

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

InitializeComponent();

MainPage = new NavigationPage(new LoginPage());

答案 2 :(得分:0)

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