gpt4 book ai didi

mvvm - 在 FreshMvvm 中监听 ItemTapped 事件

转载 作者:行者123 更新时间:2023-12-03 10:34:28 25 4
gpt4 key购买 nike

在我的项目中,我有一个 ListView ,现在听 SelectedItem 更改很容易,每个教程都有,但我找不到任何关于使用 ItemTapped 事件的内容。

我在modelPage中将事件绑定(bind)到什么?

谢谢,

麦克风

最佳答案

由于ItemTapped是一个事件而不是 Command (或BindableProperty)你不能直接从你那里使用它PageModel .

他们发明了类似 Behaviors 的东西为了这。使用行为,您可以打开 EventCommand .

虽然有像 Corcav's one 这样的第三方插件, 它也内置于 Xamarin.Forms now .

让我通过 Corcav 解释一下,其他实现应该类似。另外我假设您使用的是 XAML。

首先,安装 NuGet,不要忘记在页面中包含正确的命名空间,这意味着添加如下内容:xmlns:behaviors="clr-namespace:Corcav.Behaviors;assembly=Corcav.Behaviors"
现在在您的ListView声明您的 Behaviors像这样:

<!-- ... 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 之外没有其他作用。 (因此是双向)。但您也可以从那里获取实际选定的项目。

所以现在在你的 PageModel声明一个 Command 并为其分配如下内容:
private void ItemSelected()
{
// Open the article page.
if (_selectedItem != null)
{
CoreMethods.PushPageModel<GroupArticlePageModel>(_selectedItem, false, true);
}
}
_selectedItem是被点击的项目分配到的属性。
当然,您可以做得更好,并使用 CommandParameter 提供行为。您将点击的项目引用放置在其中。

关于mvvm - 在 FreshMvvm 中监听 ItemTapped 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37938125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com