我在XAML中有以下代码:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:AAA;assembly=AAA"
x:Class="AAA.FavoritesPage">
<ContentPage.Content>
<StackLayout BackgroundColor="{Binding ThemeBackgroundColor}" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<local:FavoritesFrameRendererSubClass/>
</StackLayout>
</ContentPage.Content>
</ContentPage>
我希望能够更改我的子类C#代码的ContentPage
中的Title
OnBindingContextChanged
属性,如下所示:
public partial class FavoritesFrameRendererSubClass : Frame
{
protected override void OnBindingContextChanged()
{
// Dynamically change the ContentPage's title here
Title = App.index + " of " + App.favoriteWords.Count;
}
}
任何人都知道这是否可行?如果是这样,怎么样?
答案 0 :(得分:1)
虽然可接受的答案有效,但这是一个相当繁重的方法。面对此问题,而不是公开整个项目的公共静态方法,而是通过Parent属性进行投射和行走可以访问Title属性。
例如,假设您有一个可重复使用的ContentPage,并且每个实例必须动态更改其标题。此用例利用命令行管理程序,并将ContentPage的标题设置为弹出显示时显示的ShellContent的标题。
((TemplatedPage)this).Title = ((BaseShellItem)((TemplatedPage)this).Parent).Title;
如果面对更深的层次结构,请使用调试器找出必需的转换,并遍历Parent属性以获取所需的标题。
答案 1 :(得分:0)
您需要公开声明ContentPage的静态对象。
public static FavoritesPage FavoritesPageCS;
public FavoritesPage()
{
FavoritesPageCS = this;
}
从您的子页面或任何其他页面,您可以使用FavoritesPage.Title
希望这对你有用。