Xaml Xamarin表单将一个内容页绑定到另一个内容页
我正在尝试将1Xaml Xamarin表单将一个内容页绑定到另一个内容页,xaml,xamarin,xamarin.forms,Xaml,Xamarin,Xamarin.forms,我正在尝试将1ContentPage.cs绑定(组合)到另一个ContentPagexaml页面。但是我错过了一些东西 <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Class1" Title="" xmlns:lo
ContentPage
.cs绑定(组合)到另一个ContentPage
xaml页面。但是我错过了一些东西
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Class1" Title=""
xmlns:local="clr-namespace:namespace;assembly:assembly">
<ContentPage.Content>
<StackLayout>
<StackLayout Orientation="Vertical">
<Label Text="Select Refering Physician" HorizontalOptions="CenterAndExpand"
TextColor="Aqua" FontSize="20">
<Label.GestureRecognizers>
<TapGestureRecognizer Tapped="Handle_Handle" NumberOfTapsRequired="1" >
</TapGestureRecognizer>
</Label.GestureRecognizers>
</Label>
<ContentView x:Name="overlay"
AbsoluteLayout.LayoutBounds="0, 0, 1, 1"
AbsoluteLayout.LayoutFlags="All"
IsVisible="False"
BackgroundColor="#C0808080"
Padding="10, 0">
<StackLayout Orientation="Vertical"
BackgroundColor="White"
HorizontalOptions="Center"
VerticalOptions="Start"
Margin="0,20,0,0" >
<Label BackgroundColor="Black" FontSize="18" TextColor="White" HorizontalOptions="Fill" Text="Search a user" />
</StackLayout>
</ContentView>
</StackLayout>
<StackLayout>
<local:ListviewPage>
</local:ListviewPage>
</StackLayout>
</StackLayout>
</ContentPage.Content>
</ContentPage>
这门课是我要学的
public class ListviewPage : ContentPage
{
ObservableCollection<ListViewModel> ListItems { get; set; } = new ObservableCollection<ListViewModel> {
new ListViewModel{Text = "Item 1"},
new ListViewModel{Text = "Item 2"},
new ListViewModel{Text = "Item 3"},
new ListViewModel{Text = "Item 4"},
new ListViewModel{Text = "Item 5"},
new ListViewModel{Text = "Item 6"},
new ListViewModel{Text = "Item 7"},
new ListViewModel{Text = "Item 8"},
new ListViewModel{Text = "Item 9"}
};
ListView ListView { get; set; }
public ListviewPage()
{
ListView = new ListView();
ListView.ItemsSource = ListItems;
ListView.ItemTemplate = new DataTemplate(typeof(CustomCell));
ListView.ItemTapped += MenuListView_ItemTapped;
var ListViewLayout = new StackLayout();
ListViewLayout.Padding = new Thickness(10, 20);
ListViewLayout.Children.Add(ListView);
Content = ListViewLayout;
}
void MenuListView_ItemTapped(object sender, ItemTappedEventArgs e)
{
if ((sender as ListView).SelectedItem == null)
return;
(sender as ListView).SelectedItem = null;
var item = e.Item as ListViewModel;
if (item.IsSelected)
item.IsSelected = false;
else
item.IsSelected = true;
}
}
公共类ListviewPage:ContentPage
{
ObservableCollection ListItems{get;set;}=新的ObservableCollection{
新ListViewModel{Text=“Item 1”},
新ListViewModel{Text=“Item 2”},
新ListViewModel{Text=“Item 3”},
新ListViewModel{Text=“Item 4”},
新ListViewModel{Text=“Item 5”},
新ListViewModel{Text=“Item 6”},
新ListViewModel{Text=“Item 7”},
新ListViewModel{Text=“Item 8”},
新ListViewModel{Text=“Item 9”}
};
ListView ListView{get;set;}
公共列表视图页()
{
ListView=新建ListView();
ListView.ItemsSource=ListItems;
ListView.ItemTemplate=新数据模板(typeof(CustomCell));
ListView.ItemTapped+=MenuListView\u ItemTapped;
var ListViewLayout=新StackLayout();
填充=新厚度(10,20);
ListViewLayout.Children.Add(ListView);
内容=ListViewLayout;
}
void MenuListView\u itemtapted(对象发送方,itemtapedeventargs e)
{
if((发送方作为列表视图)。SelectedItem==null)
返回;
(发件人作为列表视图)。选择EdItem=null;
var item=e.作为ListViewModel的项目;
如果(项目.已选定)
item.IsSelected=false;
其他的
item.IsSelected=true;
}
}
我不想导航我想在同一个页面中呈现它我认为你要做的应该是使用一个单独的视图/控件,它可以在多个页面中使用,而不是试图将页面放在页面中
public class ListViewControl : StackLayout
{
ObservableCollection<ListViewModel> ListItems { get; set; } = new ObservableCollection<ListViewModel>
{
new ListViewModel{Text = "Item 1"},
new ListViewModel{Text = "Item 2"},
new ListViewModel{Text = "Item 3"},
new ListViewModel{Text = "Item 4"},
new ListViewModel{Text = "Item 5"},
new ListViewModel{Text = "Item 6"},
new ListViewModel{Text = "Item 7"},
new ListViewModel{Text = "Item 8"},
new ListViewModel{Text = "Item 9"}
};
ListView ListView { get; set; }
public ListViewControl()
{
ListView = new ListView();
ListView.ItemsSource = ListItems;
ListView.ItemTemplate = new DataTemplate(typeof(CustomCell));
ListView.ItemTapped += MenuListView_ItemTapped;
//NOTE: this is where you would want to set any bindings,
//either in code or by adding a xaml file to do it in there instead.
Padding = new Thickness(10, 20);
Children.Add(ListView);
}
void MenuListView_ItemTapped(object sender, ItemTappedEventArgs e)
{
if ((sender as ListView).SelectedItem == null)
return;
(sender as ListView).SelectedItem = null;
var item = e.Item as ListViewModel;
if (item.IsSelected)
item.IsSelected = false;
else
item.IsSelected = true;
}
}
公共类ListViewControl:StackLayout
{
ObservableCollection ListItems{get;set;}=新的ObservableCollection
{
新ListViewModel{Text=“Item 1”},
新ListViewModel{Text=“Item 2”},
新ListViewModel{Text=“Item 3”},
新ListViewModel{Text=“Item 4”},
新ListViewModel{Text=“Item 5”},
新ListViewModel{Text=“Item 6”},
新ListViewModel{Text=“Item 7”},
新ListViewModel{Text=“Item 8”},
新ListViewModel{Text=“Item 9”}
};
ListView ListView{get;set;}
公共ListViewControl()
{
ListView=新建ListView();
ListView.ItemsSource=ListItems;
ListView.ItemTemplate=新数据模板(typeof(CustomCell));
ListView.ItemTapped+=MenuListView\u ItemTapped;
//注意:这是您想要设置任何绑定的地方,
//要么在代码中,要么在其中添加一个xaml文件。
衬垫=新厚度(10,20);
添加(列表视图);
}
void MenuListView\u itemtapted(对象发送方,itemtapedeventargs e)
{
if((发送方作为列表视图)。SelectedItem==null)
返回;
(发件人作为列表视图)。选择EdItem=null;
var item=e.作为ListViewModel的项目;
如果(项目.已选定)
item.IsSelected=false;
其他的
item.IsSelected=true;
}
}
然后在
RadShedulerDiagnosis
页面中使用该新类,在页面或视图上设置BindingContext,并在xaml
中使用新控件 尝试创建新的内容页并将代码复制到该页。这是最简单的方法我认为这是不可能的。即使是这样,我相信这不是一种方式,它看起来会像标签页那样。不管怎样,我想在这种情况下,a对你来说是更好的方法,不是吗?
public class ListViewControl : StackLayout
{
ObservableCollection<ListViewModel> ListItems { get; set; } = new ObservableCollection<ListViewModel>
{
new ListViewModel{Text = "Item 1"},
new ListViewModel{Text = "Item 2"},
new ListViewModel{Text = "Item 3"},
new ListViewModel{Text = "Item 4"},
new ListViewModel{Text = "Item 5"},
new ListViewModel{Text = "Item 6"},
new ListViewModel{Text = "Item 7"},
new ListViewModel{Text = "Item 8"},
new ListViewModel{Text = "Item 9"}
};
ListView ListView { get; set; }
public ListViewControl()
{
ListView = new ListView();
ListView.ItemsSource = ListItems;
ListView.ItemTemplate = new DataTemplate(typeof(CustomCell));
ListView.ItemTapped += MenuListView_ItemTapped;
//NOTE: this is where you would want to set any bindings,
//either in code or by adding a xaml file to do it in there instead.
Padding = new Thickness(10, 20);
Children.Add(ListView);
}
void MenuListView_ItemTapped(object sender, ItemTappedEventArgs e)
{
if ((sender as ListView).SelectedItem == null)
return;
(sender as ListView).SelectedItem = null;
var item = e.Item as ListViewModel;
if (item.IsSelected)
item.IsSelected = false;
else
item.IsSelected = true;
}
}