Xamarin 绑定上下文更改列表视图清空按钮文本

Xamarin 绑定上下文更改列表视图清空按钮文本,xamarin,xamarin.forms,freshmvvm,Xamarin,Xamarin.forms,Freshmvvm,我已经面对这种奇怪的行为有一段时间了,我无法理解到底是什么导致了这个问题 我使用的是FreshMvvm,我有一个列表视图,里面有两个按钮 现在的问题是其中一个按钮从绑定中获取其文本,其次是使用我必须遵循的单击命令分配按钮 添加此项后,单击事件工作正常,但文本绑定不起作用。我怀疑这是由于绑定上下文更改造成的,我确信这是全部原因,但我无法找到修复此问题的方法。我的listview代码如下: <ListView Grid.Row="1" ItemsSource="{Bind

我已经面对这种奇怪的行为有一段时间了,我无法理解到底是什么导致了这个问题

我使用的是FreshMvvm,我有一个列表视图,里面有两个按钮

现在的问题是其中一个按钮从绑定中获取其文本,其次是使用我必须遵循的单击命令分配按钮

添加此项后,单击事件工作正常,但文本绑定不起作用。我怀疑这是由于绑定上下文更改造成的,我确信这是全部原因,但我无法找到修复此问题的方法。我的listview代码如下:

<ListView Grid.Row="1" 
          ItemsSource="{Binding CategoryAndActivities}" 
          x:Name="WishListName"
          HorizontalOptions="FillAndExpand" 
          VerticalOptions="FillAndExpand" >
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>                                        
                    <Frame>
                        <Grid VerticalOptions="FillAndExpand" 
                              HorizontalOptions="FillAndExpand">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto" />
                                <RowDefinition Height="*" />
                                <RowDefinition Height="Auto" />
                            </Grid.RowDefinitions>
                            <!--Image and Title-->
                            <AbsoluteLayout Grid.Row="0"
                                            HeightRequest="70" 
                                            IsClippedToBounds = "true">
                                <ffimageloading:CachedImage Source="{Binding ActivityImage}" 
                                                            Aspect="AspectFill" 
                                                            AbsoluteLayout.LayoutFlags="All"
                                                            AbsoluteLayout.LayoutBounds="0.0, 0.0, 0.3, 0.85" 
                                                            Margin="5, 0, 5, 5" 
                                                            ErrorPlaceholder="nopreviewlandscape" 
                                                            LoadingPlaceholder="loadingicon"/>
                                <Label x:Name="ActivityNameLabel" 
                                       Text="{Binding ActivityName}" 
                                       FontAttributes="Bold" 
                                       VerticalTextAlignment="Start"
                                       TextColor="{StaticResource price_text_color}" 
                                       FontSize="Small"
                                       AbsoluteLayout.LayoutFlags="All"
                                       AbsoluteLayout.LayoutBounds="1.0, 0.0, 0.7, 0.85" 
                                       Margin="5, 5, 5, 5">
                                </Label>
                            </AbsoluteLayout>
                            <!--Descp-->
                            <StackLayout Grid.Row = "1" 
                                         IsClippedToBounds="true">
                                <Label Text="{Binding AcitivityDescription}" 
                                       FontSize="Small" 
                                       LineBreakMode="WordWrap" 
                                       Margin="5, 0, 5, 5"/>
                            </StackLayout>
                            <Grid BackgroundColor="White" 
                                  Grid.Row = "2" 
                                  VerticalOptions="FillAndExpand" 
                                  HorizontalOptions="FillAndExpand">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="50*"/>
                                    <ColumnDefinition Width="50*"/>
                                </Grid.ColumnDefinitions>

                                <Button BackgroundColor="{StaticResource ColorBrandingYellow}"  
                                        HorizontalOptions="FillAndExpand"  
                                        Command="{Binding AddToWishListCommand}" 
                                        Grid.Column="0" 
                                        BindingContext="{Binding Source={x:Reference ListName}, Path=BindingContext}" 
                                        CommandParameter="{Binding Source={x:Reference ActivityNameLabel},Path=BindingContext}" 
                                        TextColor="Black" 
                                        Text="{resourceLocal:Translate addToWishlist}" 
                                        FontSize = "Small" />
                                <Button BackgroundColor="{StaticResource ColorBrandingYellow}" 
                                        HorizontalOptions="FillAndExpand" 
                                        Grid.Column="1" 
                                        TextColor="Black" 
                                        Text="{Binding ActivityAmount}" 
                                        FontSize = "Small" 
                                        Command="{Binding GoFeatureActivityDetail}" 
                                        BindingContext="{Binding Source={x:Reference ListName}, Path=BindingContext}"
                                        CommandParameter="{Binding Source={x:Reference ActivityNameLabel},Path=BindingContext}"/> 
                            </Grid>
                        </Grid>
                    </Frame>                                        
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
public ICommand GoFeatureActivityDetail { get; set; }

public BrowseFeaturesPageModel()
{
    AddToWishListCommand = new Command(WishListCommand);
    GoFeatureActivityDetail = new Command(FeatureActivityDetailCommand);
}

private async void FeatureActivityDetailCommand(object obj)
{}

思维正确,执行不力

这里发生的事情是,您更改了按钮的
BindingContext
,现在它无法再“查看”项目的
ActivityAmount
属性,因为它正在“查看”
BrowseFeaturesPageModel
对象。 您可以简化操作,只在要使用的位置更改
BindingContext
,而不是整个
视图(本例中的按钮):



一个小时前就解决了,谢谢你的回答,但这是正确的,你刚刚节省了我自己回答的时间。谢谢,深夜密码可能会很愚蠢。你看,哈哈,我完全同意你的说法!
<Button BackgroundColor="{StaticResource ColorBrandingYellow}" 
        HorizontalOptions="FillAndExpand" 
        Grid.Column="1" 
        TextColor="Black" 
        Text="{Binding ActivityAmount}" 
        FontSize = "Small" 
        Command="{Binding BindingContext.GoFeatureActivityDetail, Source={x:Reference ListName}}" 
        CommandParameter="{Binding .}"/>