我想从ViewModel类动态绑定ScrollView内容。
我有xaml代码:
Nth
和ViewModel代码
<ScrollView
Grid.Column="1"
Content="{Binding UserGrid}"
HorizontalScrollBarVisibility="Never"
IsEnabled="False"
Orientation="Horizontal">
</ScrollView>
当然,我已经在View类中初始化了绑定上下文
我的问题是,是否可以使用此内容绑定来动态绑定此内容。 目前,我收到一个错误:
,找不到“内容”的属性,可绑定属性或事件,或者值和属性之间的类型不匹配”
如果不是动态视图绑定的正确方法,那是什么?
答案 0 :(得分:0)
数据绑定的整体思想是将UI与数据分开。因此,数据模型不应包含任何UI元素。
您可以做什么:
现在在使用ViewModel的视图中,重载构造函数以将您的视图模型作为参数。 在构造函数中,您遍历CardViewModel列表中的项目,并为每个项目创建一个Grid。
public TimeTableView(ViewModel model)
{
foreach (CardViewModel cardModel in CardViewData)
{
CardView view = new CardView(cardModel);
Container.Children.Add(view);
}
}
请注意,“容器”是包含cardviews的元素的占位符。
实际上,我建议您实现一个自定义视图,其中包含所有Elements,以便显示CardViewModel的数据,因此您可以将自定义视图的绑定上下文设置为cardview模型:
public class CardView : Grid
{
public CardView(CardViewModel model)
{
BindingContext = model;
}
}
此外,ScrollView只能包含一个元素,因此不能简单地将一堆元素放入其中。 您可能需要在其中放置一个网格,然后将CardViews添加到该网格中。