C# 如何在Xamarin表单中的Master Detail页下添加网格视图?
我试图在屏幕底部添加一个网格视图,其中包含媒体播放器中正在播放的媒体的“当前播放”信息。问题是,我希望无论页面显示什么,该视图都存在 主布局是导航菜单面板的主详细页面,其中详细页面应包含所有内容 详细信息页面可以是内容页面、导航页面(大部分)或模式内容页面。然而,如果我只能选择一个,我会选择它作为一个导航页面 因此,我只想做一些像这样的事情:C# 如何在Xamarin表单中的Master Detail页下添加网格视图?,c#,forms,xaml,xamarin,xamarin.forms,C#,Forms,Xaml,Xamarin,Xamarin.forms,我试图在屏幕底部添加一个网格视图,其中包含媒体播放器中正在播放的媒体的“当前播放”信息。问题是,我希望无论页面显示什么,该视图都存在 主布局是导航菜单面板的主详细页面,其中详细页面应包含所有内容 详细信息页面可以是内容页面、导航页面(大部分)或模式内容页面。然而,如果我只能选择一个,我会选择它作为一个导航页面 因此,我只想做一些像这样的事情: 但是在另一个视图/页面中包装一个页面是不可能的,我还试图修改Master Detail page控件模板,将该网格添加到细节页面的底部,并在上面显示任
但是在另一个视图/页面中包装一个页面是不可能的,我还试图修改Master Detail page控件模板,将该网格添加到细节页面的底部,并在上面显示任何页面,但没有找到原始模板,甚至没有为Master Detail layout设置模板
我是Xamarin的新手,但对c#和xaml有些经验,非常感谢您的帮助。您可以将
ContentPresenter
与控件模板一起使用
this.BindingContext = new AppViewModel();
在App.xaml>Application.Resources>ResourceDictionary中创建控件模板
<!-- Grid Template -->
<ControlTemplate x:Key="GridTemplate">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<ContentPresenter Grid.Row="0" />
<Label
Grid.Row="1"
BackgroundColor="Accent"
Text="Grid Template" />
</Grid>
</ControlTemplate>
我已将该项目上传到GitHub上供您参考。
更新:
对于控件模板的数据绑定,可以使用TemplateBinding
创建AppViewModel:
public class AppViewModel
{
public string Name { get; set; } = "Name_A";
public AppViewModel()
{
}
}
App.xml:
<ControlTemplate x:Key="GridTemplate">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<ContentPresenter Grid.Row="0" />
<Label Grid.Row="1" BackgroundColor="Accent" Text="{TemplateBinding BindingContext.Name}" />
</Grid>
</ControlTemplate>
谢谢您的帮助,但这正是我不想做的,因为现在网格确实在两个页面中可见,我也可以对项目页面使用相同的原则,但问题是每次页面更改时,整个网格都会重新创建,现在我不再有静态网格的感觉,它只是闪烁着意味着它重新加载。此外,我不再有相同的控件,这意味着我将不得不处理未知数量的重新加载,最终我将创建全局变量来设置。。。或者是数据绑定。。。再次感谢您的帮助。我已经更新了我的回复,告诉您如何使用控件模板的绑定。你可以参考一下。
this.BindingContext = new AppViewModel();