在MVVM交叉绑定语句中使用Linq

本文关键字:Linq 语句 绑定 MVVM | 更新日期: 2023-09-27 18:11:13

在MVVM交叉绑定语句中我可以使用linq表达式吗?

例如

;in my ItemTemplate item_places.axml:

<VideoView
    android:id="@+id/placesVideo"
    local:MvxBind="VideoUri myPlace.videos.FirstOrDefault().url" />
// Models
public class MyPlace
{
    public List<Video> videos { get; set; }
}
public class Video
{
    public string url { get; set; }
}

在MVVM交叉绑定语句中使用Linq

不,那是不可能的(据我所知)。您可以通过向模型添加另一个属性来实现这一点:

public class MyPlace
{
    public List<Video> videos { get; set; }
    public Video MyFirstVideo
    {
        get
        {
            return videos.FirstOrDefault();
        }
    }
}

那么你的绑定看起来如下:

<VideoView
    android:id="@+id/placesVideo"
    local:MvxBind="VideoUri myPlace.MyFirstVideo.url" />

但是要小心:这里没有PropertyChanged。所以当你更新你的视频列表时,你的视图中没有任何变化!