从ControlTemplate绑定到ContentPage标题

时间:2017-07-27 04:02:06

标签: xamarin xamarin.forms

我有一个相当简单的Xamarin.Forms应用,ContentPage ControlTemplate

中有App.XamlResourceDictionary

我正在尝试绑定到父ContentPage的ContentPage.Title属性。但以下似乎没有效果......

ContentPage

<ContentPage
    x:Class="Inhouse.Mobile.Pcl.Views.MoveLocationView"
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    ControlTemplate="{StaticResource MainPageTemplate}"
    Title="Move Location"
    ...

ControlTemplate

<?xml version="1.0" encoding="utf-8" ?>
<Application
    x:Class="Inhouse.Mobile.Pcl.App"
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ControlTemplate x:Key="MainPageTemplate">

                <cut for Brevity ...>

                    <StackLayout BackgroundColor="#333333">
                        <Label Text="{TemplateBinding Page.Title}"></Label>
                    </StackLayout>

                    <ScrollView Grid.Row="2" >
                        <ContentPresenter VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" />
                    </ScrollView>

            </ControlTemplate>
        </ResourceDictionary>
    </Application.Resources>
</Application>

我不确定我究竟应该绑定什么

,即我的尝试

<Label Text="{TemplateBinding Page.Title}"></Label>

1 个答案:

答案 0 :(得分:3)

我的问题是我在HorizontalOptions="StartAndExpand"并且需要设置

Title所以我能看到它。

此外,{TemplateBinding Title} 已足够

<StackLayout Grid.Row="1" BackgroundColor="#333333">
   <Label Text="{TemplateBinding Title}" TextColor="AliceBlue" HorizontalOptions="StartAndExpand"/>
</StackLayout>

I.e

// ----
// Sass (v3.4.21)
// Compass (v1.0.3)
// ----

$icons: 
    wifi 600,
    wifi-hotspot 601,
    weather 602;

@each $icon in $icons {
    .icon-#{nth($icon, 1)}, 
    %icon-#{nth($icon, 1)} {
        content: #{'"\\' + nth($icon, 2) + '"'}; // <------ See this line
    }
}