如何检查变量是否小于Xamarin Forms中选定的数字?

6ioyuze2  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(92)

我正在尝试创建具有以下页面的应用程序:

  • 主页.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");
            }
                
           
        }
s6fujrry

s6fujrry1#

导航时需要传递值

var item = ((MainPageViewModel)BindingContext).SelectedItem
Navigation.PushAsync(new Name_and_suggestions(item));

然后在第二页,您需要修改它的构造函数以接受参数

int player; 

public Name_and_suggestions(int player)
{
    InitializeComponent();

    this.player = player;

    ...
}

现在,第二页具有类级别变量player,其中包含在第一页上选择的值

vmpqdwk3

vmpqdwk32#

如果你想保存这个值,你可以使用Xamarin.Essentials中的**Preferences*。
在Picker中选择值时,可以尝试以下代码:

public int SelectedItem
{
    get
    {
        return selectedItem;
    }
    set
    {
        selectedItem = value;
        references.Set("PickerSelectedValue", value);
    }
}

而在另一页中,如果要使用此值:

int value = Preferences.Get("PickerSelectedValue", 1); // the second parameter is default value you want to set

有关详细信息,请参阅Xamarin.Essentials: Preferences
希望对你有用。

相关问题