我正在尝试创建具有以下页面的应用程序:
- 主页.xaml(+主页. xaml.cs)
- 名称和建议.xaml(+名称和建议. xaml.cs)
- MainPageViewModel.cs
我想检查“participantsturn”是否小于用户在主页面上的选择器中选择的值。如果是,我想给它加上+1,直到它相等,然后继续使用else。但是现在当我测试它并从选择器中选择大于1的值时,它仍然跳过if并继续使用else。有人知道我如何防止这种情况发生吗/我需要修改代码的哪一部分?谢谢!
对于主页面,我有一个选择器,用户可以从中选择1-30中的一个数字:
<Picker x:Name="mypicker"
Title="Choose number of participants"
ItemsSource="{Binding ItemCollection}"
SelectedItem="{Binding SelectedItem}"
SelectedIndex="{Binding SelectedItemIndex}"
/>
在“MainPageViewModel”中,我有以下代码:
public int SelectedItem { get; set; }
public ObservableCollection<int> ItemCollection { get; set; }
public MainPageViewModel()
{
ItemCollection = new ObservableCollection<int>();
CreateCollection();
}
private void CreateCollection ()
{
var numList = Enumerable.Range(1, 30).ToList();
ItemCollection = new ObservableCollection<int>(numList);
}
在“Name and sugestions.cs”页面中,我有以下代码:
public partial class Name_and_suggestions : ContentPage
{
public Name_and_suggestions()
{
InitializeComponent();
this.BindingContext = new MainPageViewModel();
}
static int participantsturn = 1;
}
后来:
if (participantsturn <= ((MainPageViewModel)this.BindingContext).SelectedItem)
{
participantsturn++;
}
我已经尝试了一些与索引,但我不知道如何做它的权利。
下面是我如何在页面之间导航的更新代码-在我的主页上,我有一个按钮,当用户点击它时,它会带到名称和建议页面:
<StackLayout Padding="50,50,50,0">
<Button Text="Start"
x:Name="StartButton"
Clicked="StartButton_Clicked"
HeightRequest="50"
/>
</StackLayout>
下面是MainPage.xaml.cs背后的代码:
private void StartButton_Clicked(object sender, EventArgs e)
{
if (mypicker.SelectedIndex >= 0)
{
Navigation.PushAsync(new Name_and_suggestions());
}
else
{
Console.WriteLine("Please choose the number of participants first");
}
}
2条答案
按热度按时间s6fujrry1#
导航时需要传递值
然后在第二页,您需要修改它的构造函数以接受参数
现在,第二页具有类级别变量
player
,其中包含在第一页上选择的值vmpqdwk32#
如果你想保存这个值,你可以使用Xamarin.Essentials中的**Preferences*。
在Picker中选择值时,可以尝试以下代码:
而在另一页中,如果要使用此值:
有关详细信息,请参阅Xamarin.Essentials: Preferences
希望对你有用。