我有一个XAML视图,在其中绑定到ViewModel和GAME_TBL类型的ObservableCollection(Games)
<ListView x:Name="GameListView"
ItemsSource="{Binding Games}"
ItemTapped="Handle_ItemTapped"
CachingStrategy="RecycleElement"
RowHeight="120">
我引用了GAME_TBL对象的属性,如下所示
<Label Text="{Binding GAME_NAME}"
Style="{StaticResource GameListTitle}" />
但是,我想样式化列表行,并试图绑定到一个不是GAME_TBL属性的对象
<BoxView Grid.Column="0"
Grid.Row="0"
Grid.ColumnSpan="5"
Grid.RowSpan="5"
BackgroundColor="{Binding BoxViewStyle}"/>
来自同一ViewModel的代码
public Color BoxViewStyle
{
get { return _boxViewStyle; }
set
{
_boxViewStyle = value;
OnPropertyChanged(nameof(BoxViewStyle));
}
}
当ViewModel被调用时,我会这样设置它
BoxViewStyle = Color.FromHex("#000000");
但是没有成功
我想这是因为我声明了整个ListView有一个ItemSource,它是操作系统,但是然后试图在没有显式引用它的情况下使用它之外的对象?这可能是错误的。
2条答案
按热度按时间ar7v8xwq1#
列表视图的
BindingContext
是Games
的任何数据类型。由于BoxViewStyle
属性位于ViewModel中,因此无法从ListView.ItemTemplate
内部绑定到它。您需要指定Binding
的源。将主ContentPage元素命名为.
x:Name="mainElement"
设置BoxViewStyle绑定时,请指定源:
0ejtzxu12#
不,那只是让事情一步一步地工作--我想知道我可以先绑定颜色,然后我打算写一个方法,让每行的颜色交替
如果你想让ListView行的颜色相同,你可以在ViewModel中创建BoxViewStyle颜色属性,因为BoxViewStyle属性在ViewModel中,所以你不能为ListView日期模板绑定它,所以你首先将你的listview命名为list,找到list的BindingContext. BoxViewStyle。
如果你想改变ListView中每一行的颜色,我建议你可以在模型中创建BoxViewStyle,根据ListView行索引来改变颜色。
Model.cs:
ViewModel.cs: