我有一个CollectionView,我想将标签的文本绑定到“RecipeName '。
这是行不通的:Text="{绑定配方名称}”
现在它看起来像:
我的视图如下所示:
<CollectionView ItemsSource="{Binding Recipes}"
SelectionMode="None">
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="{x:Type x:String}">
<SwipeView>
<Grid>
<Frame>
<Frame.GestureRecognizers>
<TapGestureRecognizer
Command="{Binding Source={RelativeSource AncestorType={x:Type viewmodel:MainViewModel}}, Path=TapCommand}"
CommandParameter="{Binding .}"/>
</Frame.GestureRecognizers>
<Label Text="{Binding .}" <!-- Here -->
FontSize="24"/>
</Frame>
</Grid>
</SwipeView>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
我的ViewModel看起来像:
public MainViewModel()
{
LoadRecipes();
}
private void LoadRecipes()
{
Recipes = new ObservableCollection<RecipeModel>
{
new RecipeModel
{
RecipeName = "Pizza", // Here
Ingredients = "Teig, Belag",
Steps = "Belag auf Teig und danach in den Ofen"
},
new RecipeModel
{
RecipeName = "Burger", // Here
Ingredients = "Brötchen, Fleisch, Belag",
Steps = "Belag und Fleisch auf das Brötchen"
}
};
}
[ObservableProperty]
ObservableCollection<RecipeModel> recipes;
2条答案
按热度按时间yuvru6vn1#
这将绑定整个对象
绑定特定属性
请注意,您只能绑定到公共属性
neskvpey2#
不需要设置文本的BindingContext,这看起来有点复杂,我给予你一些建议,让绑定的使用更加清晰,适合你的情况。
首先设置内容页的BindingContext,设置为MainViewModel,可以在.xaml文件中设置:
或在.cs文件后的代码中:
然后对于CollectionView,将ItemsSource绑定到MainViewModel中的配方。默认的BindingContext与其父级相同,即之前设置的MainViewModel。
DataTemplate的x:DataType不是必需的。Recipes是RecipeModel示例的集合,DataTemplate定义每个示例的显示方式。因此,对于每个标签,Text属性应绑定到每个模型示例的RecipeName属性。
希望对你有用。如果你还有什么问题,尽管问。
有关详细信息,请参阅Populate a CollectionView with data和Data binding。