【发布时间】:2017-11-01 03:03:18
【问题描述】:
我正在使用 Xamarin 表单:2.3.4.247 棱镜库:6.3.0
以下是最新 Xamarin Forms 中具有 Bind-able Picker ass 的代码: 查看
将我认为的(棱镜)行为注册为以下
xmlns:b="clr-namespace:Prism.Behaviors;assembly=Prism.Forms"
Picker 还显示 CountryCodes 的数据,这是 PickerItem
类型的列表 <Picker ItemsSource="{Binding CountryCodes}" Title="Select Country" ItemDisplayBinding="{Binding Name}">
<Picker.Behaviors>
<b:EventToCommandBehavior EventName="SelectedIndexChanged" Command="{Binding ItemTappedCommand}" EventArgsParameterPath="Item" />
</Picker.Behaviors>
</Picker>
在各自的视图模型中,我将命令定义为如下
public DelegateCommand<PickerItem> ItemTappedCommand { get; }
在构造函数中:
ItemTappedCommand = new DelegateCommand<PickerItem>(OnCountryPickerTapCommandExecuted);
委托功能如下:
private void OnCountryPickerTapCommandExecuted(PickerItem item)
{
SelectedCountryCode = item.Code;//some property I want it to assign
}
问题是选择器绑定正确,但是在选择/更改选择时没有任何反应:
我在棱镜中遗漏了什么吗?
【问题讨论】:
-
您是否尝试过双向绑定?
-
@Diceble - 是的也试过了,没有任何变化,几次我得到一个未处理的异常发生。但是我无法调试它发生在哪条线上。与“EventArgsParameterPath”有关,这就是我能想到的。
-
如果我从代码中删除 EventArgsParameterPath="Item" 参数,我可以进行调试,并执行 OnCountryPickerTapCommandExecuted(PickerItem Item),但很明显该项目返回 null。所以这似乎是参数路径有一些我无法解决的问题,请大家帮忙。
-
不确定为什么我的 LogCat 显示 NullReferenceException:如所见 ---------------->Info 2411 MonoDroid System.NullReferenceException:对象引用未设置为实例的一个对象。在 Prism.Behaviors.EventToCommandBehavior.OnEventRaised (System.Object sender, System.EventArgs eventArgs) [0x00054] in :0 ....
b__0 (System.Object s, Android.Content.DialogClickEventArgs e) [ 0x00000] 在 C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\AppCompat\PickerRenderer.cs:103
标签: xamarin xamarin.forms prism