我有一个CollectionView,我想将标签的文本绑定到“Recipename”。
无法执行:Text="{Binding RecipeName}”
现在看起来像:
x1c 0d1x的数据
我的视图看起来像:
<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 = "Rezept 1", // Here
Ingredients = "Zutaten 1",
Steps = "Schritte 1"
},
new RecipeModel
{
RecipeName = "Rezept 2", // Here
Ingredients = "Zutaten 2",
Steps = "Schritte 2"
}
};
}
[ObservableProperty]
ObservableCollection<RecipeModel> recipes;
型
编辑:非常感谢你的回答。我得到了我:Text="{Binding Source={RelativeSource AncestorType={x:Type model:RecipeModel}}, Path=RecipeName}"
2条答案
按热度按时间zhte4eai1#
这将绑定整个对象
字符串
绑定特定属性
型
注意,只能绑定公共属性
ego6inou2#
不需要设置Text的BindingContext,看起来有点复杂,我给予一些建议,让绑定的使用更加清晰。
首先设置ContentPage的BindingContext,设置为MainViewModel,可以在.xaml文件中设置:
字符串
或在.cs文件后面的代码中:
型
然后对于CollectionView,将ItemsSource绑定到MainViewModel中的Recipes,默认的BindingContext与其父级相同,即之前设置的MainViewModel。
型
x:DataTemplate的DataType不是必须的,Recipes是RecipeModel示例的Collection,DataTemplate定义了每个示例如何显示,所以对于每个标签,Text属性应该绑定到每个模型示例的RecipeName属性。
希望对你有用。如果你还有什么问题,尽管问。
有关更多信息,请参阅Populate a CollectionView with data和Data binding。