2017-10-03 12 views
0

アイテムを選択すると、同じ色の子供の背景がすべて変更されるというエラーが見つかりました。Xamarinフォーム - 選択したアイテムのリストビューですべての背景が同じに変更されます

すべての要素で、プロパティBackgroundColorを設定します。これが唯一のiOS

で起こったコードのサンプルに従ってください:

XAML

<ListView 
     x:Name="ListPainel" 
     SeparatorColor="#d2d8e2" 
     SeparatorVisibility="Default" 
     Margin="0" 
     ItemsSource="{Binding ListPainel_Source}" 
     HasUnevenRows="true" 
     RefreshCommand="{Binding ListPainel_RefreshCommand}" 
     IsRefreshing="{Binding ListPainel_IsRefreshing}" 

    > 
    </ListView> 

ViewCellの一部

 protected override void OnBindingContextChanged() 
    { 
     base.OnBindingContextChanged(); 

     dynamic temp = BindingContext; 

     PainelDto painel = (PainelDto)temp; 

     ... 

     if(painel.HasDetalhes) 
     { 
      Button detalhes = new Button() 
      { 
       Text="VER DETALHES", 
       FontSize = 12, 
       TextColor = Color.FromHex("#4482ff"), 
       HorizontalOptions = LayoutOptions.End, 
       VerticalOptions = LayoutOptions.Start, 
       HeightRequest = 20, 
       WidthRequest = 120, 
       BackgroundColor = Color.DeepPink 
      }; 
      detalhes.SetBinding(
       Button.CommandProperty 
       , new Binding(
        "ViewDetalhesCommand" 
        , BindingMode.Default 
        , null 
        , null 
        , null 
        , _viewModelPainel 
       ) 
      ); 
      box.Children.Add(detalhes); 
     } 

     ... 

     View = box; 
    } 

未選択項目 Unselected

選択項目 Selected

いくつかのいずれかこの問題を解決する方法を知っていますか?

+0

私は質問を変更。 –

答えて

1

iOSでセルを選択するときのデフォルトの動作です。

効果を無効にするには、ViewCellにはcustom rendererが必要です。

iOSプロジェクトでNativeiOSCellRendererというクラスを作成します。

コード:

[assembly: ExportRenderer(typeof(ViewCell), typeof(NativeiOSCellRenderer))] 
namespace FormsListViewSample.iOS 
{ 
    class NativeiOSCellRenderer : ViewCellRenderer 
    { 
     public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv) 
     { 
      UITableViewCell cell = base.GetCell(item, reusableCell, tv); 
      cell.SelectionStyle = UITableViewCellSelectionStyle.None; 
      return cell;  
     } 
    } 
} 
関連する問題