Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/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
Xamarin.forms listview中的选定项不同的方法_Xamarin.forms - Fatal编程技术网

Xamarin.forms listview中的选定项不同的方法

Xamarin.forms listview中的选定项不同的方法,xamarin.forms,Xamarin.forms,我有个问题。以下两种方法正确绑定列表视图的所选项目方法1似乎更简单、更快,方法2似乎更消耗代码。这两种方法之间还有什么区别吗?或者这两种方法完全一样?我唯一关心的是方法2在默认情况下是否在双向模式下工作,是否可以更改为另一种模式? 谢谢你的信息 方法1: <ListView SelectedItem="{Binding SelectedOrder, Mode=TwoWay}" ItemsSource="{Binding Orders}"> ..

我有个问题。以下两种方法正确绑定
列表视图的
所选项目
<代码>方法1
似乎更简单、更快,
方法2
似乎更消耗代码。这两种方法之间还有什么区别吗?或者这两种方法完全一样?我唯一关心的是
方法2
在默认情况下是否在
双向
模式下工作,是否可以更改为另一种
模式
? 谢谢你的信息

方法1:

<ListView SelectedItem="{Binding SelectedOrder, Mode=TwoWay}" ItemsSource="{Binding Orders}">
..
</ListView>
<ListView ItemsSource="{Binding Orders}" ItemSelected="OnPlaylistSelected">
..
</ListView>

在快速查看了文档之后,我自己找不到一个明确的答案:

不过,如果我冒昧地猜测一下,我会建议,如果您只是想为SelectedItem分配一些内容,而不做任何花哨的事情,那么方法1就是最好的选择

但是,如果您想做除设置SelectedItem之外的其他事情,那么您可以使用方法2,因为它将使您能够更好地控制后台发生的事情

这两种方法之间还有什么区别吗?或者这两种方法完全一样

方法1使用双向绑定模型,方法2使用默认绑定模型。但是这里的默认模型也应该是双向的。因此,它们应该是相同的

一般来说你不需要去寻找。大多数控件的行为与您的直觉预期一致

例如:

默认情况下,
条目是双向的,因为这正是您所期望的。
标签是一种方式,因为。。。好。。。无法通过UI设置标签。
等等

您真正需要显式设置绑定模式的唯一时间是当您仔细考虑做一些不寻常的事情时,比如你想使用一个
条目
,因为你喜欢它的外观,但不希望用户能够输入一个新的值:这是一个奇怪的条目用例,所以你可能需要显式地设置它的绑定模式

根据的定义,如果使用BindableProperty进行绑定,则默认值应为单向

  • 默认值:在绑定中使用时,指示绑定应使用。在BindableProperty声明中使用时,默认为
    BindingMode.OneWay
如果您想在运行时修改绑定模型,可以使用代码进行修改

listview.SetBinding<StoreDetailViewModel>(ListView.ItemsSourceProperty, vm =>vm.items,mode: BindingMode.TwoWay);
listview.SetBinding(listview.ItemsSourceProperty,vm=>vm.items,模式:BindingMode.TwoWay);

两者都是等效的。有些人更喜欢事件方法,所以更喜欢MVVM方法。ListView提供了对两者的支持methods@Jason我认为它甚至不需要处理程序——我认为在这种特殊情况下listview不需要;此属性不具有命令可能性,因此必须在.cs级别上创建命令,否则,对于其他控件,即使选择了第二种方法,也可以将直接命令添加到属性P.S.关于模式-什么;第二次进近时的默认值以及如何管理?第二次进近时的模式如何?默认值是什么以及最终如何配置?
listview.SetBinding<StoreDetailViewModel>(ListView.ItemsSourceProperty, vm =>vm.items,mode: BindingMode.TwoWay);