![](/img/trans.png)
[英]How to Customize MasterDetailPage Of a xamarin forms app on UWP?
[英]how to get rid of MasterDetailPage empty space Xamarin Forms
我有我的項目出了問題,我使用MasterDetailPage
用一個簡單ListView
和使用本地命名空間與調用另一頁在他體內ListView
過了,有此結果,問題是,該工具欄之間的空白和列表視圖,但是如果我嘗試在不使用MasterDetailPage的情況下導航這個頁面,那么listview在沒有這個空格的情況下工作正常,你可以在這里查看
App.cs導航到MenuPage.Xaml
MainPage = new NavigationPage(new MenuPage());
MenuPage.XAML
`<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Gone.MenuPage"
xmlns:local="clr-namespace:Gone;assembly=Gone">
<MasterDetailPage.Master>
<ContentPage Title="Menu">
<ListView BackgroundColor="Transparent"
SeparatorVisibility="Default"
HasUnevenRows="True"
x:Name="listView">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Padding="2" Orientation="Horizontal">
<Image Aspect="Fill" WidthRequest="60" HeightRequest="60" Source="{Binding image}"/>
<StackLayout Padding="5,18,0,0" Orientation="Vertical">
<Label TextColor="Black" Text="{Binding title}"/>
</StackLayout>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage>
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<local:MainPage/>
</MasterDetailPage.Detail>
</MasterDetailPage>`
MainPage.xaml中
<ListView BackgroundColor="Transparent"
SeparatorVisibility="Default"
HasUnevenRows="True"
x:Name="listView">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<Image Aspect="AspectFill" WidthRequest="130" HeightRequest="130" Source="{Binding image}"/>
<StackLayout Padding="20" Orientation="Vertical">
<Label LineBreakMode="WordWrap" FontSize="17" TextColor="#4CAF50" Text="{Binding title}"/>
<Label FontAttributes="Bold" TextColor="#2962FF" Text="{Binding price}"/>
<Label TextColor="#455A64" Text="{Binding date}"/>
</StackLayout>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
臨時解決方案是在Android項目中創建CustomMasterDetailRenderer
:
[assembly: ExportRenderer(typeof(MasterDetailPage), typeof(CustomMasterDetailRenderer))]
namespace Your.Name.Space
{
public class CustomMasterDetailRenderer : MasterDetailPageRenderer
{
public override void AddView(Android.Views.View child)
{
child.GetType().GetRuntimeProperty("TopPadding").SetValue(child, 0);
var padding = child.GetType().GetRuntimeProperty("TopPadding").GetValue(child);
base.AddView(child);
}
}
}
也許需要在你的view
設置Padding
0。
感謝Sylvia Martinez: https : //forums.xamarin.com/discussion/comment/244966/#Comment_244966
如果您將MasterDetailPage與NavigationPage一起使用,則會發生這種情況。
不要將MasterDetailPage聲明為新的NavigationPage(新的MasterDetailPage())。
而是將MasterDetailPage聲明為var masterDetailPage = new MasterDetailPage()。 之后使用masterDetailPage.Detail = new NavigationPage(new ContentPage());
因此,如果您通過masterDetail和導航進行導航,您將會想出幾個NavigationPages。 而你將無法使用Navigation.PushAsync(somePage)。 而不是它你將不得不使用當前的NavigationPage實例,如:((NavigationPage)(this.Detail))。PushAsync(new ContentPage());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.