ListView Tapped删除数据模板Xamarin.Forms上的按钮背景颜色

时间:2016-12-12 09:11:39

标签: c# ios xaml xamarin xamarin.forms

我不知道原因,但当我点按任何ListView项时,其中的Button模板会丢失背景颜色。

我在ViewCell内使用默认ListView。这是一个Xamarin.Forms错误吗?

我只在iOS上遇到此问题。

    <ListView x:Name="lv" Grid.Row="2" HasUnevenRows="true" BackgroundColor="White" ItemTapped="OnItemTapped">
 <ListView.ItemTemplate>
      <DataTemplate>
       <ViewCell>               
       <StackLayout Padding="16" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" BackgroundColor="{Binding .,Converter={StaticResource IndexColorConverter}">

        <StackLayout VerticalOptions="Center">
                  <Label Text="{Binding Auditorium}" FontSize="18" TextColor="Black"/>
                  <ContentView Padding="0,-5,0,0">
                         <Label Text="{Binding Title}" FontSize="16" TextColor="Black"/>        
                  </ContentView>
      <StackLayout Orientation="Horizontal">
         <Button WidthRequest="100" Text="{Binding ButtonOverviewText}" TextColor="White" BackgroundColor="{Binding ButtonColor}" CommandParameter="{Binding .}" Clicked="Handle_Clicked"/>
         <Button WidthRequest="100" Text="{Binding ButtonOverviewText}" TextColor="White" BackgroundColor="{Binding ButtonColor}" CommandParameter="{Binding .}" Clicked="Handle_Clicked" />
   </StackLayout>
  </StackLayout>

   <Label Text="{Binding Coordinator}" FontSize="14" TextColor="Gray"/>

   </StackLayout>
   </ViewCell>
  </DataTemplate>
</ListView.ItemTemplate>
</ListView>

button colors removed

2 个答案:

答案 0 :(得分:1)

有一个老问题,我提出了类似的错误:https://bugzilla.xamarin.com/show_bug.cgi?id=27502

但是,您提到的具体方案是iOS上的预期行为,也发生在本机(非Xamarin.Forms)项目中。请参阅评论here。您可以考虑使用UITableViewCellSelectionStyle禁用单元格的UITableViewCellSelectionStyle.NoneHere是单元格渲染器的示例。您可以在此处设置cell.SelectionStyle。这将阻止细胞的灰色突出显示。如果您不希望它可以是一种解决方法来保持您的按钮颜色。

答案 1 :(得分:0)

我对此问题的解决方法如下。

<Grid>
<BoxView BackgroundColor="{Binding ButtonColor}"/>
<Button Text="{Binding ButtonOverviewText}" TextColor="White" BackgroundColor="Transparent" CommandParameter="{Binding .}" Clicked="Handle_Clicked"/>
</Grid>