Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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
Mvvm 如何在Xamarin.Forms中绑定Picker_Mvvm_Xamarin - Fatal编程技术网

Mvvm 如何在Xamarin.Forms中绑定Picker

Mvvm 如何在Xamarin.Forms中绑定Picker,mvvm,xamarin,Mvvm,Xamarin,所以我一直想将Xamarin.Forms中两个选择器的项绑定到我的ViewModel。我主要使用文本字段绑定,在这里我只编写如下内容: <Label Text="{Binding CurrentDate}" /> 我装订完了。现在我有两个拾荒者。选择器表示地图/字典。字典>。“A”被映射到{“1”,“2”},“B”被映射到{“4”,“5”}。第一个选择器应显示“A”和“B”作为选项。第二个选择器应显示与从第一个选择器选择的值关联的值 所以有两个问题。1) 我如何绑定选择器?2) 如

所以我一直想将Xamarin.Forms中两个选择器的项绑定到我的ViewModel。我主要使用文本字段绑定,在这里我只编写如下内容:

<Label Text="{Binding CurrentDate}" />
我装订完了。现在我有两个拾荒者。选择器表示地图/字典。字典>。“A”被映射到{“1”,“2”},“B”被映射到{“4”,“5”}。第一个选择器应显示“A”和“B”作为选项。第二个选择器应显示与从第一个选择器选择的值关联的值

所以有两个问题。1) 我如何绑定选择器?2) 如何绑定具有依赖于其他选择器选择的数据的选择器

我试过了

<Picker Items="{Binding ItemsA}"></Picker>

具有匹配的属性

    public List<string> ItemsA
    {
        get { return itemsA;}
        set { itemsA = value;PropertyChanged(this, new PropertyChangedEventArgs("ItemsA")); }
    }
公共列表项目a
{
获取{return itemsA;}
设置{itemsA=value;PropertyChanged(这是新的PropertyChangedEventArgs(“itemsA”);}
}

我是不是错过了什么?非常感谢您的帮助。

很遗憾,标准组件中缺少此功能,但添加起来相对容易,如中所述。使用此派生组件,您将能够绑定项目资源SelectedItem属性。如果需要,添加类似WPF的DisplayMemberPath和ValueMemberPath属性也相对容易。

看起来此功能现在已内置到常规的Xamarin.Forms选择器中。它目前在的预发布NuGet软件包中,但在发布后应在稳定的2.3.4+版本中。不是绑定到项目,而是绑定到
ItemsSource
SelectedItem

真的吗?我对此有点陌生,但Mvvm对我来说几乎是要么全有,要么全无。我认为几乎完全分开的观点没有任何意义。我将检查这个组件。很奇怪,这样一个基本的图形元素不支持这一点。对于大多数Xamarin.Forms组件来说,这是真的吗?我同意——当我第一次遇到它时,它确实看起来像是一个令人震惊的遗漏,但它不是冰山一角。通过添加BindablePicker控件和Repeater控件(用于重复基于ItemsSource的模板化内容),我发现Xamarin形成了一个功能强大的MVVM平台,特别是与免费的DevExpress网格结合使用时,我现在已经相对轻松地移植了一些基于Microsoft XAML的应用程序,没有太多的折衷。您将绑定到列表的选定项,而不是列表本身。所以您不会尝试绑定选择器中显示的数据?这可能会在运行时在模型中更新,并应反映在视图中。如何填充列表?考虑这些数据在运行时可能会发生变化。DanyDaKurSimmply将您的数据以易于访问的形式进行排列-我建议将其保存在字典中。将第一个列表绑定到值1,并根据选择将源从字典上载到选择器2@为什么?我目前的结构是字典,但问题是如何进行绑定。另一张海报说,如果不引进一个新的采摘者,就无法做到这一点。问题是“如何将此数据绑定到选择器?”。你的回答只是“绑定”。我是不是误解了什么?看起来我误解了你需要做的事情-我同意其他海报-你需要第二个选择-现在发布了!
    public List<string> ItemsA
    {
        get { return itemsA;}
        set { itemsA = value;PropertyChanged(this, new PropertyChangedEventArgs("ItemsA")); }
    }