繁体   English   中英

无法从模型Xamarin Forms获取选定的Picker ID

[英]Not getting the selected Picker Id from model Xamarin Forms

我对Xamarin Forms完全陌生。 当用户要提交数据时,我想获取选定的选择器项目ID。 数据正在填充到选择器,没有任何问题。

型号类别

public class CurrentStatus
{
    public string id { get; set; }
    public string current_status { get; set; }
}

public enum CurrentStatusId
{
    NotApproved = 2,
    Approved = 3,
    Selected = 4,
    NotSelected = 5
} 

我在视图中将ID限制为这样。

<local:HCImagePicker x:Name="currentstatus" Title="Current Status" SelectedIndexChanged="HandleStatusItemChanged" SelectedItem="{Binding CurrentStatusId}" ItemsSource="{Binding CurrentStatuses}" ItemDisplayBinding="{Binding current_status}" HorizontalOptions="FillAndExpand" Margin="0,0,0,10" Image="arrowdown" ImageAlignment="Right" ImageHeight="8" ImageWidth="12">
                        </local:HCImagePicker>   

只需在提交数据后尝试获取ID(在这里,我只是在打印值)

 public async void SubmitData(object sender, EventArgs e){


        var selectedId = currentstatus.SelectedItem;

        await DisplayAlert("TEST", "Id is"+ selectedId, "OK");


    }

而不是获取ID(我不想获取所选值),而是获取MyProject.Models.CurrentStatus。

有人可以帮我解决这个问题。

在没有真正知道HCImagePicker的外观的情况下,我猜想SelectedItem可能是对象类型。

因此,您需要强制转换并正确访问其属性:

CurrentStatus selectedStatus = (currentStatus.SelectedItem as CurrentStatus);
if (selectedStatus == null)
    return;
await DisplayAlert("TEST", "Id is"+ selectedStatus.id , "OK");

个人说明:帮自己一个忙,不要使用var。 它可能很舒适并且使用起来很快,但是当涉及到任何类型的对象时,您肯定会感到困惑,因为您不知道最终可能会使用哪种类型的类。

据我所知,使用var代替适当的类型会使长期阅读和维护代码变得更加困难。 此外,当强制转换出现错误时,您还可以更快地找到可能的错误源,因为编译器会警告您您尝试执行的操作是不可能的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM