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