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

Using Linq in MVVM Cross Bind Statements

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

例如;在我的 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; }
}

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

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。因此,当您更新视频列表时,您的视图中没有任何变化!