[英]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.