如何将ListView按钮的绑定上下文设置为Xamarin Forms中父级的绑定上下文

基本上,我有一个带有DataTemplate选择器的ListView,它使用基于ListView项的特定DataTemplate。

现在,在DataTemplate中 – 我有一个带有命令的按钮,应该在Parent(或ListView)本身的ViewModel上绑定。

请注意,我只想绑定按钮的Command属性,因为Text和其他属性需要绑定到按钮的当前绑定Context。

DataTemplate的BindingContext是ListView Item bindingContext(在本例中为Message Model),但我希望能够将数据模板中的特定按钮仅绑定到父listView的viewmodel。

我怎么做?

      

试试这个:

  

你必须给页面一个带有值MessageListPagex:Name属性,所以它与你的纯MVVM混淆了一下,但是因为Xamarin XAML不支持相对绑定(据我所知……)这就是这种方式去。

不是将datatemplate声明为内容字典中的静态资源,而是将datatemplate放在列表本身的itemtemplate中。

我并不是100%确定底层发生了什么,但是当声明为静态资源时,似乎datatemplate与页面的绑定上下文无关。 这意味着当您离开并返回到页面或更改列表视图的内容时,您可能会在呈现项目更新时遇到问题。

这将使您能够将按钮命令绑定到父级,但如果您离开并重新访问该页面也可以停止任何问题