Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.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
C# Android和Spinner与ReactiveUI的绑定_C#_Data Binding_Xamarin.android_Reactiveui - Fatal编程技术网

C# Android和Spinner与ReactiveUI的绑定

C# Android和Spinner与ReactiveUI的绑定,c#,data-binding,xamarin.android,reactiveui,C#,Data Binding,Xamarin.android,Reactiveui,我正在尝试在Xamarin.Android应用程序中使用ReactiveUI绑定到微调器。要将项目添加到微调器,我需要使用ArrayAdapter。但是ArrayAdapter需要Android.Content.Context。我应该将其传递到ViewModel中吗 有谁知道一个用Xamarin.Android编写的应用程序,它使用的是ReactiveUI,我可以在那里找到灵感?ReactiveUI文档仅引用为iOS编写的示例应用程序 看法 我还没有做过任何Xamarin.Android的开发,

我正在尝试在Xamarin.Android应用程序中使用ReactiveUI绑定到微调器。要将项目添加到
微调器
,我需要使用
ArrayAdapter
。但是
ArrayAdapter
需要
Android.Content.Context
。我应该将其传递到ViewModel中吗

有谁知道一个用Xamarin.Android编写的应用程序,它使用的是ReactiveUI,我可以在那里找到灵感?ReactiveUI文档仅引用为iOS编写的示例应用程序

看法
我还没有做过任何Xamarin.Android的开发,但一般来说,您不希望将有关视图的详细信息传递到ViewModel中,因为它不应该知道关于视图的任何信息

我会将项目列表公开为一个集合(例如,
IList
),并使用绑定上的转换器创建一个
ArrayAdapter

this.OneWayBind(this.ViewModel.Devices, this.View.Property, devices => new ArrayAdapter(devices));
this.View.Property
应指每当设备列表更改时都会更改的属性。第三个参数(
devices=>new ArrayAdapter()
)从ViewModel接收属性作为参数,然后返回可在
this.View.property
上设置的值

例如:

  • ViewModel.Count
    是一个
    字符串
  • View.Property
    是一个
    int
像这样绑定:

this.OneWayBind(this.ViewModel.Count, this.View.Property, count => int.Parse(count));

第三个参数可以是一个函数或lambda,它接受ViewModel属性类型的参数,并返回view属性类型的值。

我没有做任何Xamarin.Android开发,但一般来说,您不希望将有关视图的详细信息传递到ViewModel中,因为它不应该知道有关视图的任何信息

我会将项目列表公开为一个集合(例如,
IList
),并使用绑定上的转换器创建一个
ArrayAdapter

this.OneWayBind(this.ViewModel.Devices, this.View.Property, devices => new ArrayAdapter(devices));
this.View.Property
应指每当设备列表更改时都会更改的属性。第三个参数(
devices=>new ArrayAdapter()
)从ViewModel接收属性作为参数,然后返回可在
this.View.property
上设置的值

例如:

  • ViewModel.Count
    是一个
    字符串
  • View.Property
    是一个
    int
像这样绑定:

this.OneWayBind(this.ViewModel.Count, this.View.Property, count => int.Parse(count));

第三个参数可以是一个函数或lambda,它接受ViewModel属性类型的参数,并返回view属性类型的值。

我说过我会提供有关Stackoverflow的任何反馈,但无论如何。。。我们有一组绑定扩展,其中一个用于微调器。在典型用法中,它看起来是这样的

        // bind the options for the distance 
        this.BindSpinner(ViewModel,
            vm => vm.TravelLimitSelected,
            vm => vm.CurrentTravelLimit,
            vm => vm.TravelLimitChoices.Distances,
            f => f.travelLimitSpinner,
            (items) =>
                    new ActionSpinnerAdapter<DistanceChoiceModel>((c, p) => new DistanceLimitViewHost(c, p), items));
//绑定距离的选项
此.BindSpinner(ViewModel,
vm=>vm.TravelLimitSelected,
vm=>vm.CurrentTravelLimit,
vm=>vm.TravelLimitChoices.distance,
f=>f.travelLimitSpinner,
(项目)=>
新的ActionSpinnerAdapter((c,p)=>new DistanceLimitViewHost(c,p,items));
在本例中,扩展方法如下所示

public static IDisposable BindSpinner<TView, TViewModel, TCommandProp, TSpinnerViewModel>(
             this TView view,
             TViewModel viewModel,
             Expression<Func<TViewModel, TCommandProp>> viewModelCommandName,
             Expression<Func<TViewModel, int>> viewModelSelectedPropertyName,
             Expression<Func<TViewModel, IList<TSpinnerViewModel>>> viewModelSourceItemsName,
             Expression<Func<TView, Spinner>> spinnerControl, Func<IList<TSpinnerViewModel>, ISpinnerAdapter> adapterFactory) where TViewModel : RxViewModel
             where TCommandProp : ICommand
             where TView : class, IViewFor<TViewModel>
             where TSpinnerViewModel : class
        {
公共静态IDisposable绑定微调器(
这一电视观点,,
TViewModel viewModel,
表达式viewModelCommandName,
表达式viewModelSelectedPropertyName,
表达式viewModelSourceItemsName,
表达式spinnerControl,Func adapterFactory),其中TViewModel:RxViewModel
其中TCommandProp:ICommand
where TView:类,IViewFor
其中tspinerviewmodel:class
{

我说过我会提供有关Stackoverflow的任何反馈,但无论如何……我们有一个绑定扩展集合,其中一个是用于微调器的。在典型用法中,它是这样的

        // bind the options for the distance 
        this.BindSpinner(ViewModel,
            vm => vm.TravelLimitSelected,
            vm => vm.CurrentTravelLimit,
            vm => vm.TravelLimitChoices.Distances,
            f => f.travelLimitSpinner,
            (items) =>
                    new ActionSpinnerAdapter<DistanceChoiceModel>((c, p) => new DistanceLimitViewHost(c, p), items));
//绑定距离的选项
此.BindSpinner(ViewModel,
vm=>vm.TravelLimitSelected,
vm=>vm.CurrentTravelLimit,
vm=>vm.TravelLimitChoices.distance,
f=>f.travelLimitSpinner,
(项目)=>
新的ActionSpinnerAdapter((c,p)=>new DistanceLimitViewHost(c,p,items));
在本例中,扩展方法如下所示

public static IDisposable BindSpinner<TView, TViewModel, TCommandProp, TSpinnerViewModel>(
             this TView view,
             TViewModel viewModel,
             Expression<Func<TViewModel, TCommandProp>> viewModelCommandName,
             Expression<Func<TViewModel, int>> viewModelSelectedPropertyName,
             Expression<Func<TViewModel, IList<TSpinnerViewModel>>> viewModelSourceItemsName,
             Expression<Func<TView, Spinner>> spinnerControl, Func<IList<TSpinnerViewModel>, ISpinnerAdapter> adapterFactory) where TViewModel : RxViewModel
             where TCommandProp : ICommand
             where TView : class, IViewFor<TViewModel>
             where TSpinnerViewModel : class
        {
公共静态IDisposable绑定微调器(
这一电视观点,,
TViewModel viewModel,
表达式viewModelCommandName,
表达式viewModelSelectedPropertyName,
表达式viewModelSourceItemsName,
表达式spinnerControl,Func adapterFactory),其中TViewModel:RxViewModel
其中TCommandProp:ICommand
where TView:类,IViewFor
其中tspinerviewmodel:class
{