Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Xamarin主菜单中的项目之间绘制水平线?_Xamarin_Xamarin.forms - Fatal编程技术网

如何在Xamarin主菜单中的项目之间绘制水平线?

如何在Xamarin主菜单中的项目之间绘制水平线?,xamarin,xamarin.forms,Xamarin,Xamarin.forms,如何在Xamarin Forms菜单项中按行分隔两项,如图所示: 我的意思是,在相同的菜单项中,我想在两组项之间画一条水平线(而不是在每个项和其他项之间,这是通过SeparatorVisibility=“Default”完成的) 以下是cs代码: using System; using Xamarin.Forms; namespace GMG { [XamlCompilation(XamlCompilationOptions.Compile)] public partial c

如何在Xamarin Forms菜单项中按行分隔两项,如图所示:

我的意思是,在相同的菜单项中,我想在两组项之间画一条水平线(而不是在每个项和其他项之间,这是通过
SeparatorVisibility=“Default”
完成的)

以下是cs代码:

using System;
using Xamarin.Forms;
namespace GMG
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class MasterDetailPage1Master : ContentPage
    {
        public ListView ListView;
        public MasterDetailPage1Master()
        {
            InitializeComponent();
            BindingContext = new MasterDetailPage1MasterViewModel();
            ListView = MenuItemsListView;
        }
        class MasterDetailPage1MasterViewModel : INotifyPropertyChanged
        {
            public ObservableCollection<MasterDetailPage1MenuItem> MenuItems { get; set; }
            public MasterDetailPage1MasterViewModel()
            {
                MenuItems = new ObservableCollection<MasterDetailPage1MenuItem>(new[]
                {
                    new MasterDetailPage1MenuItem { Id = 0, Title = "Hospitals", Icon="hosp.png", TargetType= typeof(Hospitals) },
                    new MasterDetailPage1MenuItem { Id = 1, Title = "Clinics", Icon="cli.png",TargetType= typeof(Clinics) },
                    new MasterDetailPage1MenuItem { Id = 2, Title = "Pharmacies", Icon="pha.png", TargetType= typeof(Pharma) },
                    new MasterDetailPage1MenuItem { Id = 3, Title = "Labs", Icon="lab2.png", TargetType= typeof(Labs) },
                    new MasterDetailPage1MenuItem { Id = 4, Title = "MainPage",  Icon="home.png", TargetType= typeof(MasterDetailPage1Detail) },
                    new MasterDetailPage1MenuItem { Id = 5, Title = "Call us",  Icon="cont.png" },
                    new MasterDetailPage1MenuItem { Id = 6, Title = "Rating App",  Icon="rate.png" },

                });
            }
            #region INotifyPropertyChanged Implementation
            public event PropertyChangedEventHandler PropertyChanged;
            void OnPropertyChanged([CallerMemberName] string propertyName = ""){
                if (PropertyChanged == null)
                    return;
                PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
}}}}
使用系统;
使用Xamarin.Forms;
名称空间GMG
{
[XamlCompilation(XamlCompilationOptions.Compile)]
公共部分类MasterDetailPage1主:ContentPage
{
公共列表视图列表视图;
公共MasterDetailPage1Master()
{
初始化组件();
BindingContext=new MasterDetailPage1MasterViewModel();
ListView=MenuItemsListView;
}
类MasterDetailPage1MasterViewModel:INotifyPropertyChanged
{
公共ObservableCollection菜单项{get;set;}
公共MasterDetailPage1MasterViewModel()
{
MenuItems=新的ObservableCollection(新[]
{
新的MasterDetailPage1MenuItem{Id=0,Title=“Hospitals”,Icon=“hosp.png”,TargetType=typeof(Hospitals)},
新的MasterDetailPage1MenuItem{Id=1,Title=“Clinics”,Icon=“cli.png”,TargetType=typeof(Clinics)},
新的MasterDetailPage1MenuItem{Id=2,Title=“Pharmacies”,Icon=“pha.png”,TargetType=typeof(Pharma)},
新的MasterDetailPage1MenuItem{Id=3,Title=“Labs”,Icon=“lab2.png”,TargetType=typeof(Labs)},
新的MasterDetailPage1MenuItem{Id=4,Title=“MainPage”,Icon=“home.png”,TargetType=typeof(MasterDetailPage1Detail)},
新建MasterDetailPage1MenuItem{Id=5,Title=“呼叫我们”,Icon=“cont.png”},
新建MasterDetailPage1MenuItem{Id=6,Title=“评级应用程序”,Icon=“rate.png”},
});
}
#区域INotifyPropertyChanged实现
公共事件属性更改事件处理程序属性更改;
void OnPropertyChanged([CallerMemberName]字符串propertyName=”“){
if(PropertyChanged==null)
返回;
调用(这是新的PropertyChangedEventArgs(propertyName));
}}}}
这是Xaml代码:

<StackLayout>
        <StackLayout>
            <Label Text="GMG"/>
        </StackLayout>
        <ListView x:Name="MenuItemsListView"
                  RowHeight="55"
                  ItemsSource="{Binding MenuItems}">
      <ListView.ItemTemplate>
        <DataTemplate>
          <ViewCell>
            <StackLayout>
              <Label Text="{Binding Title}"/>
                <Image Source="{Binding Icon}"/>
            </StackLayout>             
          </ViewCell>         
        </DataTemplate>
      </ListView.ItemTemplate>
    </ListView>      
  </StackLayout>
</ContentPage>

对不起,我的问题是,您必须在listview中放置一个BoxView并设置其可见性,例如


,例如,当您的标题到达收件箱时,将其设置为真。您可以通过循环您创建的集合并将其设置在那里来实现这一点。

您的XAML代码如下所示

<StackLayout>
    <StackLayout>
        <Label Text="GMG"/>
    </StackLayout>
    <ListView x:Name="MenuItemsListView"
              RowHeight="55"
              ItemsSource="{Binding MenuItems}">
  <ListView.ItemTemplate>
    <DataTemplate>
      <ViewCell>
<StackLayout Orientation="Vertical">
        <StackLayout Orientation="Horizontal">
          <Label Text="{Binding Title}"/>
            <Image Source="{Binding Icon}"/>
        </StackLayout>
<BoxView HeightRequest="1" Color="#00000" IsVisible="{Binding IsSeparatorVisible}"/>
</StackLayout>              
      </ViewCell>         
    </DataTemplate>
  </ListView.ItemTemplate>
 </ListView>      
</StackLayout>
我在这里搜索,“如何在我的XAML代码中放置水平线?” 如果这就是你想要的,就把这个放进去:



如何使用
?@TARIQ循环浏览您创建的集合(MenuItems),并检查您点击的标题是否在需要显示分隔符的位置。
    new MasterDetailPage1MenuItem { Id = 0, Title = "Hospitals", Icon="hosp.png",IsSeparatorVisible = true, TargetType= typeof(Hospitals) },
                new MasterDetailPage1MenuItem { Id = 1, Title = "Clinics", Icon="cli.png",IsSeparatorVisible = false,TargetType= typeof(Clinics) },
               <BoxView 
                   HeightRequest="1"
                   Color="LightGray"
                   Margin ="40, 0, 40, 0"/>