我有一个页面,其中包含从api获取的新闻条目的列表视图。 此列表视图仅显示标题。 当点击其中一个标题时,它应导航到详细页面以显示被点击的新闻。
我尝试用多种不同的方式发送它,但是我无法使它工作。
这是我最新尝试使用在newsDetail页面上点击的对象。
(PAGE1 WITH ALL NEWS)itemTapped方法->
public async void goToNews(object sender, ItemTappedEventArgs eventArgs)
{
System.Diagnostics.Debug.WriteLine(eventArgs.ToString());
newsITEM news = eventArgs.Item as newsITEM;
if (news == null)
return;
await Navigation.PushModalAsync(new newsItem(news));
}
该项目的(详细信息第PAGE2页)处理程序
public newsItem(newsITEM news)
{
InitializeComponent();
var newsITEM = new newsITEM(Navigation, news);
System.Diagnostics.Debug.WriteLine(newsITEM._news.title.rendered);
BindingContext = newsITEM;
}
我有一个rootObject类,其中充满了第1页上的所有新闻。
然后我有一个newsITEM类,它具有rootObject,这是我试图填充tappedItem然后发送到page2的原因。
它的行为与对象为null相同。 有人可以引导我找到正确的解决方案吗? 我知道这个问题有点令人困惑,但是我希望您能理解这个问题。
先谢谢了。
答案 0 :(得分:1)
您可以这样做
void Handle_ItemTapped(object sender, Xamarin.Forms.ItemTappedEventArgs e)
{
if(e.Item == null) {
return;
}
var selectedItem = (Model) e.Item; // model
Navigation.PushAsync(new newsITEM(selectedItem)); // pass the selected whole item from list to DetaiPage 'selectedItem' using constructor
((ListView)sender).SelectedItem = null;
}
并在您的详细信息页面中,它将返回其父页面中的所有点击的项目数据;
public newItemPage(Model item) // get selected listview tap model object using this constructor(Model item)
{
InitializeComponent();
NavigationPage.SetBackButtonTitle(this, "");
Title = item.first_name;
this.BindingContext = item; // binding using this 'item' model object and do whatever
}
答案 1 :(得分:0)
use可以将项目模型发送给下一个类的构造函数。
`@Configuration
public class CXFConfig {
@Bean
public ServletRegistrationBean dispatcherServlet() {
return new ServletRegistrationBean(new CXFServlet(), "/Myservice/*");
}
@Bean(name=Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
SpringBus springBus = new SpringBus();
springBus.getInInterceptors().add(new AppInboundInterceptor());
springBus.getOutInterceptors().add(new AppOutboundInterceptor());
return springBus;
}
}`
简单地在下一个类中将该模型的参数指定为
private async void EventList_ItemTapped(object sender, ItemTappedEventArgs e)
{
var item= e.Item as Model;
if (item!= null)
{
await Navigation.PushAsync(new EventDetail(item));
}
}