Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重置Xamarin表单中的选择器显示值_C#_Xaml_Xamarin.forms_Mvvm - Fatal编程技术网

C# 重置Xamarin表单中的选择器显示值

C# 重置Xamarin表单中的选择器显示值,c#,xaml,xamarin.forms,mvvm,C#,Xaml,Xamarin.forms,Mvvm,我有一个表单,它有一个选择器元素,用户可以选择一个选项。使用MVVM方法,我能够检索值并重置选择器选项。但是,屏幕上显示的文本不会被删除 这是选择器的XAML代码段: <Picker Title="Choose A Category" x:Name="PickerCategory" ItemDisplayBinding="{Binding Ty

我有一个表单,它有一个选择器元素,用户可以选择一个选项。使用MVVM方法,我能够检索值并重置选择器选项。但是,屏幕上显示的文本不会被删除

这是选择器的XAML代码段:

<Picker Title="Choose A Category"
                        x:Name="PickerCategory" 
                        ItemDisplayBinding="{Binding Type}"
                        SelectedItem="{Binding CategorySelection}"
                        SelectedIndex="{Binding SelectIndex}"
                        SelectedIndexChanged="PickerCategory_SelectedIndexChanged"/>
class SellPageViewModel : ViewModelBase
{
    public SellPageViewModel()
    {
        Vehicle = new Vehicle();
        SaveVehicleCommand = new Command(SaveVehicle);
        SetNewCommand = new Command(SetNew);
        SetUsedCommand = new Command(SetUsed);
    }

    private Vehicle vehicle;

    public Vehicle Vehicle
    {
        get { return vehicle; }
        set
        {
            SetProperty(ref vehicle, value);
            Console.WriteLine("Vehicle details entered");
        }
    }

    private object categorySelection;

    public object CategorySelection
    {
        get { return categorySelection; }
        set
        {
            SetProperty(ref categorySelection, value);
            Category catToInt = (Category)value;
            if (value != null)
                Vehicle.CategoryId = catToInt.Id;
            
        }
    }

    private int selectIndex;
    public int SelectIndex
    {
        get { return selectIndex; }
        set
        {
            if (value != -1)
                SetProperty(ref selectIndex, value);
        }
    }



    public Command SetNewCommand { get; }
    public Command SetUsedCommand { get; }
    public Command SaveVehicleCommand { get; }

    void SetNew()
    {
        Vehicle.Condition = "New";
    }

    void SetUsed()
    {
        Vehicle.Condition = "Used";
    }
    async void SaveVehicle()
    {
        Console.WriteLine("Save Button Clicked");
        Console.WriteLine(Vehicle.Title);
        Console.WriteLine(Vehicle.Price);
        Console.WriteLine(Vehicle.CategoryId);
        Console.WriteLine(Vehicle.Condition);


        SelectIndex = 0;

        Vehicle = new Vehicle();
        
        
    }
}
因此,重置选择器的索引后,值将重置,但值的标题将保持不变:


如何将此字段重置为用户选择项目之前的占位符文本?

根据@CFun的建议,这是一个简单的解决方案:

我设定:

CategorySelection = new Category();

代码中不需要SelectIndex来执行此功能。因此,它可以从ViewModel和XAML页面中删除。

SelectedIndex的默认值为-1,而不是0我也尝试过-1,但它不起作用。
CategorySelection=null?@Cfun我试过了too@Cfun但在你的帮助下,我找到了答案。我会把答案贴出来的