簡體   English   中英

在 Xamarin 表單中重置選取器顯示值

[英]Reset Picker Display Value in Xamarin Forms

我有一個包含 Picker Element 的表單,用戶可以選擇一個選項。 使用 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();
        
        
    }
}

因此,在為選取器重置索引后,值將重置,但值的標題保持不變:

在此處輸入圖片說明

如何將此字段重置為用戶選擇項目之前存在的占位符文本?

根據@CFun 的建議,這是一個簡單的解決方案:

我設置:

CategorySelection = new Category();

代碼中不需要 SelectIndex 來執行此功能。 因此它可以從 ViewModel 和 XAML 頁面中刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM