我在 Xamarin 中有一個 Picker,我想將 Picker 中的選定專案傳遞到另一個頁面(TablePage)。在此 Picker 下方有一個按鈕,每當單擊它時,我都想轉到另一個頁面并在 pther 頁面中顯示所選值。
<Picker x:Name="SelectTablePicker" Title="Select table" TextColor="#676FA3" TitleColor="#676FA3" FontSize="Title" ItemsSource="{Binding TablesFromViewModelCollector}" ItemDisplayBinding="{Binding Name}" SelectedItem="{Binding SelectedTable}" />
<Button x:Name="SelectTableButton" Text="Select Table" HorizontalOptions="Center" Style="{DynamicResource TitleStyle}" Clicked="Selected_Button" />
所以我試圖通過點擊事件來傳遞這個值:
async void Selected_Button(object sender, System.EventArgs e)
{
var SelectTablePicker = (Picker)sender;
int selectedIndex = SelectTablePicker.SelectedIndex;
if (selectedIndex != -1)
{
await Navigation.PushAsync(new TablePage((string)SelectTablePicker.ItemsSource[selectedIndex]));
}
}
在表格頁面上,我創建了要顯示所選專案的標簽:
<Label x:Name="MyLabel" Text="#" HorizontalOptions="Fill" Grid.Column="0" BackgroundColor="#FF5959" TextColor="#EEF2FF" HorizontalTextAlignment="Left" Padding="0, 0, 0, 10" VerticalTextAlignment="Center"/>
這里是它的控制器:
public TablePage(string tableName)
{
InitializeComponent();
MyLabel.Text = $"{UserName}";
}
但是每當我單擊按鈕時,我都會收到錯誤訊息,我無法弄清楚原因。
uj5u.com熱心網友回復:
這是一個按鈕點擊事件,所以sender
是 a Button
,而不是 aPicker
var SelectTablePicker = (Picker)sender;
int selectedIndex = SelectTablePicker.SelectedIndex;
而是這樣做
// SelectTablePicker is the name of your picker
int selectedIndex = SelectTablePicker.SelectedIndex;
更好的是,你已經系結SelectedItem="{Binding SelectedTable}"
了,所以你可以SelectedTable
直接從你的虛擬機中獲取價值
最后,您要將所選專案轉換為 a Table
,而不是 astring
new TablePage((Table)SelectTablePicker.ItemsSource[selectedIndex])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/470474.html
標籤:xamarin xamarin.forms xamarin.android xamarin.ios xamarin 工作室
上一篇:更改TabbedPage、Xamarin.iOS的主頁
下一篇:三態切換按鈕