所以我有一个视图,其中包含在轮播中显示的视图列表。我希望在子视图之一中的特定属性发生更改时,使父项后面的代码起作用。
父母:
<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;
答案 0 :(得分:0)
您可以绑定Picker
SelectedIndex并评估模型类的值,这将使您能够访问其他模型类属性并轻松更改其他属性
答案 1 :(得分:0)
我假设您遵循的是正确的MVVM模式,其中ViewModels是一个单独的类,而不是View的后面代码中。
我建议父级的ViewModel包含一个ObservableCollection
子级ViewModels。子ViewModel引发一个事件,而您的父ViewModel处理该事件。