0

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

这是 Picker 的 XAML 代码片段:

<Picker Title="Choose A Category"
                        x:Name="PickerCategory" 
                        ItemDisplayBinding="{Binding Type}"
                        SelectedItem="{Binding CategorySelection}"
                        SelectedIndex="{Binding SelectIndex}"
                        SelectedIndexChanged="PickerCategory_SelectedIndexChanged"/>

这是重置 Picker 的 ViewModel:

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();
        
        
    }
}

因此,在重置选择器的索引后,值会重置,但值的标题保持不变:

在此处输入图像描述

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

4

1 回答 1

0

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

我设置:

CategorySelection = new Category();

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

于 2020-09-24T22:18:45.450 回答