Xamarin.forms Xamarin开关切换事件:获取列表的绑定项

Xamarin.forms Xamarin开关切换事件:获取列表的绑定项,xamarin.forms,binding,Xamarin.forms,Binding,截至撰写时Mac上的最新Xamarin: <ContentPage.Content> <StackLayout> <ListView x:Name="ItemsListView" ItemsSource="{Binding Items}" VerticalOptions="FillAndExpand" HasUnevenRows="true" RefreshCommand="{Binding LoadItemsCommand}" IsPull

截至撰写时Mac上的最新Xamarin:

<ContentPage.Content>
    <StackLayout>
        <ListView x:Name="ItemsListView" ItemsSource="{Binding Items}" VerticalOptions="FillAndExpand" HasUnevenRows="true" RefreshCommand="{Binding LoadItemsCommand}" IsPullToRefreshEnabled="true" IsRefreshing="{Binding IsBusy, Mode=OneWay}" CachingStrategy="RecycleElement" ItemSelected="OnItemSelected">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Orientation="Horizontal">
                            <StackLayout Padding="10">
                                <Label Text="{Binding Summary}" LineBreakMode="NoWrap" Style="{DynamicResource ListItemTextStyle}" FontSize="Medium" />
                                <Label Text="{Binding Reporter}" LineBreakMode="NoWrap" Style="{DynamicResource ListItemDetailTextStyle}" FontSize="Micro"  />
                            </StackLayout>
                            <StackLayout Orientation="Horizontal" HorizontalOptions="EndAndExpand">
                                <Label Text="{Binding Start}" FontSize="Medium" VerticalOptions="Center"/>
                                <Switch IsToggled="{Binding Result}" Toggled="Handle_Toggled"  VerticalOptions="Center"/>
                            </StackLayout>
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>
</ContentPage.Content>

通常,您需要做的是响应item类中属性“Result”的更改,并将您的逻辑排除在Page类之外。 如果需要在事件中进行处理,可以通过以下方式进行处理:

void Handle_Toggled(object sender, Xamarin.Forms.ToggledEventArgs e)
{
    var switch = sender as Switch;
    var item = switch.Parent.BindingContext as ItemViewModel;
}

用项目的类型替换ItemViewModel。

通常,您需要做的是对项目类中属性“Result”的更改做出反应,并将您的逻辑排除在Page类之外。 如果需要在事件中进行处理,可以通过以下方式进行处理:

void Handle_Toggled(object sender, Xamarin.Forms.ToggledEventArgs e)
{
    var switch = sender as Switch;
    var item = switch.Parent.BindingContext as ItemViewModel;
}

按项目类型替换ItemViewModel。

谢谢-了解PropertyChangedEvent;这是有道理的。在这种情况下,当用户切换开关时,如果项目的某些方面处于特定状态,我需要实际打开项目详细信息页面。在我的例子中-项目的“列表”由ViewModel提供,因此switch.BindingContext是实际的数据项记录。@Hicham如何在MVVM模型中获得类似的结果?@niketan这取决于您的解决方案,但通常使用两种方法:1。交换机上的双向数据绑定。2.将切换事件传递到ItemViewModelThank-了解PropertyChangedEvent;这是有道理的。在这种情况下,当用户切换开关时,如果项目的某些方面处于特定状态,我需要实际打开项目详细信息页面。在我的例子中-项目的“列表”由ViewModel提供,因此switch.BindingContext是实际的数据项记录。@Hicham如何在MVVM模型中获得类似的结果?@niketan这取决于您的解决方案,但通常使用两种方法:1。交换机上的双向数据绑定。2.将切换事件传递给ItemViewModel