Xamarin从父级访问子视图属性

时间:2020-05-13 02:17:10

标签: c# xamarin

所以我有一个视图,其中包含在轮播中显示的视图列表。我希望在子视图之一中的特定属性发生更改时,使父项后面的代码起作用。

父母:

<CarouselView x:Name="EventWizardCarouselView" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" Grid.Row="0">       
    <CarouselView.ItemTemplate>
        <DataTemplate>
            <ContentView Content="{Binding .}"/>
        </DataTemplate>
    </CarouselView.ItemTemplate>
</CarouselView>

此视图的项目来源是在后面的代码中设置的,如下所示:

_views = new List<ContentView>() {
    new EventBasicInfoView(),
    new EventRulesView(),
    new EventLocationsView()
};
EventWizardCarouselView.ItemsSource = _views;

子视图包含父项关心的属性:

<Picker x:Name="EventTypePicker" ItemsSource="{Binding EventTypes}" SelectedItem="{Binding EventType.Value}">

我想在父级中执行以下操作,但是由于访问冲突而无法执行。有什么办法可以使选择器(EventTypePicker)公开,还是可以让我做以下事情?

EventTypePicker.SelectedIndexChanged += EventPickerIndexChanged;

2 个答案:

答案 0 :(得分:0)

您可以绑定Picker SelectedIndex并评估模型类的值,这将使您能够访问其他模型类属性并轻松更改其他属性

答案 1 :(得分:0)

我假设您遵循的是正确的MVVM模式,其中ViewModels是一个单独的类,而不是View的后面代码中。

我建议父级的ViewModel包含一个ObservableCollection子级ViewModels。子ViewModel引发一个事件,而您的父ViewModel处理该事件。

相关问题