gpt4 book ai didi

xamarin.ios - MvxPickerViewModel 绑定(bind)到对象的属性

转载 作者:行者123 更新时间:2023-12-04 05:50:21 25 4
gpt4 key购买 nike

我有以下代码:

var pickerViewModel = new MvxPickerViewModel(this.mandantenPicker);
this.mandantenPicker.Model = pickerViewModel;
this.mandantenPicker.ShowSelectionIndicator = true;
mandantenAuswahlTextfield.InputView = this.mandantenPicker;

var set = this.CreateBindingSet<LoginView, LoginViewModel>();

set.Bind(pickerViewModel).For(p => p.SelectedItem).To(vm => vm.SelectedMandant);
set.Bind(pickerViewModel).For(p => p.ItemsSource).To(vm => vm.Mandanten);

set.Apply();

在 PickerView 中,我没有预期值。它显示了对象的命名空间。

我正在绑定(bind)到“Mandants”列表,Mandant 有名字/姓氏。如何设置“待显示”值?

比如:

set.Bind(pickerViewModel).For(p => p.ItemsSource).To(vm => vm.Mandanten)["FirstName"]; //stupid example but to show better what I mean/want

最佳答案

MvxPickerViewModel 当前使用 GetTitle()确定要显示的内容:

    public override string GetTitle(UIPickerView picker, int row, int component)
{
return _itemsSource == null ? "-" : RowTitle(row, _itemsSource.ElementAt(row));
}

protected virtual string RowTitle(int row, object item)
{
return item.ToString();
}

来自 https://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross.Binding.Touch/Views/MvxPickerViewModel.cs

如果您想自定义显示的字符串,您可以:

  • 从 MvxPickerViewModel 继承并为 RowTitle 提供覆盖:

    protected override string RowTitle(int row, object item)
    {
    return ((Mandant)item).FirstName;
    }
  • 或覆盖ToString在您的Mandant对象

  • 或提供和使用来自 IEnumerable<Mandant> 的一些 ValueConverters至IEnumerable<WrappedMandant>MandantWrappedMandant在哪里 WrappedMandant提供ToString()你想使用的实现:

      public class WrappedMandant
    {
    public Mandant Mandant { get;set;}
    public override string ToString()
    {
    return Mandant.FirstName;
    }
    }

如果您想自定义进一步显示的选择器单元格,您也可以覆盖 GetView他们为每个 Mandant 提供一个自定义单元格

关于xamarin.ios - MvxPickerViewModel 绑定(bind)到对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18463705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com