[英]In Xamarin forms, How can you make selected option in picker not visible in other pickers?
我有7個具有相同選項的類似選擇器。 現在,用戶可以從picker1中選擇與在picker2中已經選擇的選項相同的選項。 我想要在picker2中不可見的用戶在picker中選擇。
我用谷歌搜索,但似乎沒人問這個問題。
void drainxy1()
{
drainlocationPicker1.Items.Add("1");
drainlocationPicker1.Items.Add("2");
drainlocationPicker1.Items.Add("3");
drainlocationPicker1.Items.Add("4");
}
void drainxy2()
{
drainlocationPicker2.Items.Add("1");
drainlocationPicker2.Items.Add("2");
drainlocationPicker2.Items.Add("3");
drainlocationPicker2.Items.Add("4");
}
void drainxy3()
{
drainlocationPicker3.Items.Add("1");
drainlocationPicker3.Items.Add("2");
drainlocationPicker3.Items.Add("3");
drainlocationPicker3.Items.Add("4");
}
void drainxy4()
{
drainlocationPicker4.Items.Add("1");
drainlocationPicker4.Items.Add("2");
drainlocationPicker4.Items.Add("3");
drainlocationPicker4.Items.Add("4");
}
<Picker x:Name="drainlocationPicker1" Title="Drain Location" />
<Picker x:Name="drainlocationPicker2" Title="Drain Location" />
<Picker x:Name="drainlocationPicker3" Title="Drain Location" />
<Picker x:Name="drainlocationPicker4" Title="Drain Location" />
/*
Picker1= select from 1,2,3,4
user selects = 2
picker2= select from 1,3,4
user selects = 3
Picker3= select from 1,4
user selects = 1
picker4= select from 4
user selects = 4 */
void drain1Handle_SelectedIndexChanged(object sender, System.EventArgs e)
{
drainlocationPicker2.Items.RemoveAt(drainlocationPicker1.SelectedIndex);
drainlocationPicker3.Items.RemoveAt(drainlocationPicker1.SelectedIndex); ` drainlocationPicker4.Items.RemoveAt(drainlocationPicker1.SelectedIndex);
}
xamlfile
<Label x:Name="drain3Label" Text="Drain 3: " Grid.Column="0"
HorizontalTextAlignment="Center" VerticalTextAlignment="Center" />
<Picker x:Name="drainlocationPicker3" Title="Drain Location" Grid.Column="1"
SelectedIndexChanged="drain3Handle_SelectedIndexChanged"/>
我為此創建了一個簡單的演示。 這是運行GIF。
您可以通過以下代碼來實現。我創建了一個包含所有項目的列表。 然后按照Jason的說明實現SelectedIndexChanged。注意:接下來,您需要自己判斷用戶的各種操作。
public partial class MainPage : ContentPage
{
List<string> list;
public MainPage()
{
InitializeComponent();
list = new List<string>();
list.Add("1");
list.Add("2");
list.Add("3");
list.Add("4");
drainxy1();
drainxy2();
drainxy3();
drainxy4();
drainlocationPicker1.SelectedIndexChanged += DrainlocationPicker1_SelectedIndexChanged;
drainlocationPicker2.SelectedIndexChanged += DrainlocationPicker2_SelectedIndexChanged;
drainlocationPicker3.SelectedIndexChanged += DrainlocationPicker3_SelectedIndexChanged;
drainlocationPicker4.SelectedIndexChanged += DrainlocationPicker4_SelectedIndexChanged;
}
private void DrainlocationPicker4_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void DrainlocationPicker3_SelectedIndexChanged(object sender, EventArgs e)
{
drainlocationPicker4.Items.RemoveAt(drainlocationPicker3.SelectedIndex);
}
private void DrainlocationPicker2_SelectedIndexChanged(object sender, EventArgs e)
{
drainlocationPicker3.Items.RemoveAt(drainlocationPicker2.SelectedIndex);
drainlocationPicker4.Items.RemoveAt(drainlocationPicker2.SelectedIndex);
}
private void DrainlocationPicker1_SelectedIndexChanged(object sender, EventArgs e)
{
drainlocationPicker2.Items.RemoveAt(drainlocationPicker1.SelectedIndex);
drainlocationPicker3.Items.RemoveAt(drainlocationPicker1.SelectedIndex);
drainlocationPicker4.Items.RemoveAt(drainlocationPicker1.SelectedIndex);
}
void drainxy1()
{
foreach (var item in list)
{
drainlocationPicker1.Items.Add(item);
}
}
void drainxy2()
{
foreach (var item in list)
{
drainlocationPicker2.Items.Add(item);
}
}
void drainxy3()
{
foreach (var item in list)
{
drainlocationPicker3.Items.Add(item);
}
}
void drainxy4()
{
foreach (var item in list)
{
drainlocationPicker4.Items.Add(item);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.