System.InvalidOperationException:** '由于对象的当前状态,操作无效。在 TouchBehavior MAUI

问题描述 投票:0回答:1

我通过 TouchBehavior 属性传递命令和命令参数,但总是出错,我该如何解决这个问题?

<ContentView.Behaviors>
        <toolkit:TouchBehavior LongPressCommand="{Binding Source={RelativeSource AncestorType={x:Type vm:ChatWIndowViewModel}}, Path=EditMessageCommand}" LongPressCommandParameter="{Binding ID}"
                                LongPressDuration="2000"/>
</ContentView.Behaviors>

我尝试通过常规命令调用它,但没有任何变化

android command maui touch .net-8.0
1个回答
0
投票

我可以重现这个问题,那是因为

Behaviours
没有独特的视觉树父级,因此相对源绑定不起作用。您可以使用 x:Reference markup 进行绑定,而不是使用相对绑定。

例如,假设 ContentView 放置在

DataTemplate
中的
CollectionView
ContentPage
中,并将其 BindingContext 设置为
ChatWIndowViewModel
。我们可以先将
x:Name
设置为
ContentPage
(在本例中,我们将
x:Name
设置为
page
),然后我们可以使用 x:Reference 标记进行绑定。

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
         ...
         x:Name="page">

...
<DataTemplate>
    <ContentView>
        <ContentView.Behaviors>
            <toolkit:TouchBehavior LongPressCommand="{Binding Source={x:Reference page}, Path=BindingContext.EditMessageCommand}" .../>
         </ContentView.Behaviors>
    ...          
    </ContentView>
</DataTemplate>

更多信息,请参阅x:参考标记扩展

如果您有任何疑问,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.