Xamarin 表单从 listview 绑定到 viewmodel
Posted
技术标签:
【中文标题】Xamarin 表单从 listview 绑定到 viewmodel【英文标题】:Xamarin forms binding to viewmodel from listview 【发布时间】:2021-10-20 03:22:06 【问题描述】:我有一个列表视图,它从我的 viewModel 绑定到一个 bindingList,所以我可以使用模型中的属性名称,但是如何在我的列表视图中再次绑定到来自 viewmodel 的属性?
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Finance.Pages.ItemsPage"
xmlns:conv="clr-namespace:Finance.Converters"
x:Name="Page">
<ContentPage.Resources>
<ResourceDictionary>
<conv:ItemTypeNameToStringConverter x:Key="ItemTypeNameToStringConverter" />
<conv:ColumnToColorConverter x:Key="ColumnToColorConverter" />
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
<StackLayout Padding="10,10">
<StackLayout Orientation="Horizontal">
<Label Text="Compound Items:"></Label>
<CheckBox IsChecked="Binding CompoundItems"></CheckBox>
</StackLayout>
<ListView ItemsSource="Binding Items">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.ContextActions>
<MenuItem Text="Edit" Command="Binding Path=EditItemCommand" CommandParameter="Binding ."/>
<MenuItem Text="Delete" Command="Binding DeleteItemCommand" CommandParameter="Binding ."/>
</ViewCell.ContextActions>
<StackLayout Orientation="Horizontal" >
<Label Text="Binding Name, Converter=StaticResource ItemTypeNameToStringConverter" HorizontalOptions="StartAndExpand"/>
<Label Text="Binding Count" BindingContext="x:Reference Name=Page" IsVisible="Binding CompoundItems" HorizontalOptions="StartAndExpand"/>
<Label Text="Binding Amount" TextColor="Binding Destination, Converter=StaticResource ColumnToColorConverter"></Label>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
</ContentPage>
属性 CompoundItems 是我的视图模型中的布尔值。
提前致谢,
【问题讨论】:
【参考方案1】:你可以这样做:
IsVisible="Binding BindingContext.CompoundItems, Source=x:Reference Name=Page"
或者使用 relativesource 来获取父 BindingContext
<Label Text="Binding Count" IsVisible="Binding CompoundItems, Source=RelativeSource AncestorType=x:Type local:YourViewModelType"/>
【讨论】:
以上是关于Xamarin 表单从 listview 绑定到 viewmodel的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Xamarin 表单中将数组绑定到 ListView
在 Xamarin 表单中将 Observable 集合绑定到我的 ListView 时遇到问题
Xamarin 表单 ListView ItemTapped/ItemSelected 命令绑定在 XAML