首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ItemTapped中收听FreshMvvm事件

在ItemTapped中收听FreshMvvm事件
EN

Stack Overflow用户
提问于 2016-06-21 07:30:43
回答 1查看 1K关注 0票数 1

在我的项目中,我有一个列表视图,现在听SelectedItem更改很容易,每个教程都有,但是我找不到使用ItemTapped事件的任何东西。

在modelPage中,我要将事件绑定到什么?

谢谢,

麦克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-21 07:50:19

因为ItemTapped是一个事件,而不是Command (或BindableProperty ),所以不能直接从PageModel中使用它。

他们为此发明了类似Behaviors的东西。通过行为,您可以将Event转换为Command

虽然有一些第三方插件可以像科卡夫氏一号这样做,但它也内置于Xamarin.Forms现在中。

让我用Corcav解释一下,其他实现应该是类似的。而且我假设你在使用XAML。

首先,安装NuGet,不要忘记在页面中包含正确的名称空间,这意味着添加类似于:xmlns:behaviors="clr-namespace:Corcav.Behaviors;assembly=Corcav.Behaviors"的内容

现在在您的ListView下面声明您的Behaviors如下:

代码语言:javascript
复制
<!-- ... more XAML here ... -->
<ListView IsPullToRefreshEnabled="true" RefreshCommand="{Binding RefreshDataCommand}" IsRefreshing="{Binding IsBusy}"  IsVisible="{Binding HasItems}" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" CachingStrategy="RecycleElement">
        <behaviors:Interaction.Behaviors>
          <behaviors:BehaviorCollection>
            <behaviors:EventToCommand EventName="ItemSelected" Command="{Binding ItemSelectedCommand}" />
          </behaviors:BehaviorCollection>
        </behaviors:Interaction.Behaviors>

<!-- ... more XAML here ... -->

注意,这是一个集合,因此如果需要,可以添加更多内容(在其他场景中也是如此)。还请注意,实际上我也使用了SelectedItem。这可能是您想要的,因为否则您点击的项目将保持选中。因此,SelectedItem属性所做的仅仅是将其设置为null (因此是TwoWay)。但是,您也可以从那里获取实际选定的项目。

因此,现在在您的PageModel中声明一个命令并使用如下所示的内容分配它:

代码语言:javascript
复制
private void ItemSelected()
{
    // Open the article page.
    if (_selectedItem != null)
    {
        CoreMethods.PushPageModel<GroupArticlePageModel>(_selectedItem, false, true);
    }
 }

_selectedItem是将被选中的项分配给的属性。当然,您可以做得更好,并为行为提供一个CommandParameter,您可以在其中放置被点击的项引用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37938125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档