如何在viewCell中获取按钮的id

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在viewCell中获取按钮的id相关的知识,希望对你有一定的参考价值。

我在viewCell中有一个按钮,我有两个付费和取消状态出现在这个Label Text =“{Binding statusDescr}”中,当标签上的状态被支付时,按钮应该出现,当它被取消时按钮不应该出现。我的问题是我无法在视单元中获取按钮的ID,以便在标签上的状态被支付时可见,并在取消时看不见

<ListView x:Name="Lista"  
          SeparatorColor="Gray" 
          SeparatorVisibility="Default" 
          HasUnevenRows="True" 
          VerticalOptions="FillAndExpand" >
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout>
                    <StackLayout Orientation="Horizontal" >
                        <StackLayout Orientation="Horizontal" 
                                     HorizontalOptions="FillAndExpand">
                            <StackLayout>
                                <Label Text="{Bindenter code hereing entityName}" 
                                       TextColor="White" 
                                       Font="14"/>
                                <Label Text="{Binding cmPaymentDate}" 
                                       TextColor="White" 
                                       Font="14"/>
                                <Label Text="{Binding statusDescr}" 
                                       TextColor="White"
                                       Font="14"/>
                            </StackLayout>
                            <StackLayout HorizontalOptions="EndAndExpand">
                                <Button x:Name="cmdOpen" 
                                        Text="Open pdf" />
                                <Label Text="{Binding paymentAmount}" 
                                       TextColor="White"
                                       Font="14" 
                                       HorizontalOptions="End" />
                                <Label Text="{Binding paymentNumber}" 
                                       TextColor="White" 
                                       Font="10" 
                                       HorizontalOptions="End" />
                            </StackLayout>
                        </StackLayout>
                    </StackLayout>
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
答案

听起来像是将按钮的IsVisible属性绑定到付费状态的好地方:

<Button x:Name="cmdOpen" 
        IsVisible="{Binding paidState}" 
        Text="Open pdf" />

请注意,这仅在paidState属性为bool时才有效。如果你只是使用像double这样的东西存储剩余的数量,你需要使用converter将值更改为bool。你的XAML:

<ContentPage.Resources>
    <ResourceDictionary>
        <local:DoubleToBoolConverter x:Key="doubleToBool" />
    </ResourceDictionary>
</ContentPage.Resources>

<!--your code --->

<Button x:Name="cmdOpen" 
        IsVisible="{Binding amountRemaining, Converter={StaticResource doubleToBool}}" 
        Text="Open pdf" />

然后是转换器:

public class DoubleToBoolConverter : IValueConverter
{
    public object Convert(
               object value, 
               Type targetType, 
               object parameter, 
               CultureInfo culture)
    {
        return (double)value == 0;
    }

    public object ConvertBack(
               object value, 
               Type targetType, 
               object parameter, 
               CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

以上是关于如何在viewCell中获取按钮的id的主要内容,如果未能解决你的问题,请参考以下文章

如何更改一个表格中按钮的颜色VIewCell [重复]

没有使用 navController.currentDestination?.id 获取当前片段 ID

Kotlin 在片段中找不到按钮 ID,为啥?

Xamarin表单ViewCell Xaml片段

如何从条目中获取文本

如何动态更改列表中基于按钮的值的图标?