我想在动态视图中添加按钮,例如,在某些情况下,我将添加2个按钮,在某些情况下,我将添加4个按钮,但是我想在只传递参数的视图中归纳所有这些逻辑例如视图标题,按钮数等...,以便可以通过以下方式部署用户...
为此,请放弃某些实现:
1.-使用-,因为如果列表中包含的元素很少,则会生成一个死区 2.-使用控件,因为Android-iOS不存在该控件
当使用MVVM作为体系结构模式时,我很难将参数传递给CodeBehind,对于前一个,使用MessagingCenter时,我在其中传递了一个字符串列表,该字符串列表最终经过并添加了按钮,但这是不起作用
您具有以下视图以及相应的x:名称...
View.xaml:
<Label
Text="{Binding Titulo}"
HorizontalOptions="CenterAndExpand">
</Label>
<StackLayout
x:Name="EntriesStackLayout">
</StackLayout>
位于视图的ViewModel中,我通过MessagingCenter传递列表
ViewModel.cs:
#region Constructor
public OptionsPopUpViewModel(string title, List<string> opciones)
{
Titulo = title;
opcionesMensaje = opciones;
MessagingCenter.Send((App)Xamarin.Forms.Application.Current, "Opciones", opcionesMensaje);
}
#endregion
然后在通过OnAppearing()方法接收的View的代码中,然后在View中创建按钮
View.xaml.cs:
public OptionsPopUpView()
{
InitializeComponent();
}
protected override void OnAppearing()
{
base.OnAppearing();
MessagingCenter.Subscribe<App, List<string>>((App)Xamarin.Forms.Application.Current, "Opciones", (s, opcionesMensaje) =>
{
foreach (var item in opcionesMensaje)
{
Button boton = new Button();
EntriesStackLayout.Children.Add(boton);
}
});
}
protected override void OnDisappearing()
{
base.OnDisappearing();
MessagingCenter.Unsubscribe<App, List<string>>(this, "Opciones");
}
预期的行为:根据列表中的项目数添加按钮
获得的行为:在跟踪代码时,第一个在我第二次运行时未执行OnAppering()方法,它进入了该方法并正确执行,但未添加按钮
为什么会出现这种情况? 因为如果我在MessagingCenter中收到列表,我的代码无法添加按钮?
我在做什么错? 对我有帮助吗?
我希望这个问题对遇到同样问题的人有所帮助
致谢!