2016-07-22 10 views
0

現在、ObservableCollectionにバインドされたテンプレートセレクタを持つカスタムViewCellがあります。 Iveは、カスタムセルテンプレートをXamarin.Forms IOS ListViewにバインドしました。Xamarin.Forms ListView with CustomViewCellを無効にするSelected Item Color

私の問題は、私が選択した項目の強調表示を無効に傾けることで、私はMenuContextアクションを経由して、選択した項目を複製する場合は、グレー色は

アイブ氏は、私が検出されたすべてのカスタムレンダラを試してみました....表示されますインターネット:)私はほとんどあきらめているようですが、私はこの問題を解決できないようです。おそらく誰かが私に情報をいくつか与えることができます。

間違ったカスタムレンダラーを使用している可能性があります。この問題のレンダラーが必要ですか?

ViewCellRenderer

[assembly: ExportRenderer(typeof(GerätViewCell), typeof(NativeViewCellRenderer))] 
namespace LindeXF.iOS.Renderer { 

    public class NativeViewCellRenderer : ViewCellRenderer { 

     public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv) { 
      var cell = base.GetCell(item, reusableCell, tv); 
      if (cell != null) 
       cell.SelectionStyle = UITableViewCellSelectionStyle.None; 

      return cell; 
     } 
    } 
} 

カスタムViewCell

<ViewCell xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      x:Class="LindeXF.Core.CustomTemplates.GerätViewCell" 
      > 
    <ViewCell.ContextActions> 
    <MenuItem x:Name="MenuItemDuplizieren" 
       CommandParameter="{Binding Id}" 
       Clicked="OnDuplizierenClicked" 
       Text="Duplizieren" /> 
    <MenuItem x:Name="MenuItemLöschen" 
       CommandParameter="{Binding Id}" 
       Clicked="OnLöschenClicked" 
       Text="Löschen" 
       IsDestructive="True" /> 
    </ViewCell.ContextActions> 
    <Grid ColumnSpacing="0" BackgroundColor="White"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="40"/> 
     <ColumnDefinition Width="9*"/> 
     <ColumnDefinition Width="7*"/> 
     <ColumnDefinition Width="10*"/> 
     <ColumnDefinition Width="5*"/> 
     <ColumnDefinition Width="18*"/> 
     <ColumnDefinition Width="10*"/> 
     <ColumnDefinition Width="10*"/> 
    </Grid.ColumnDefinitions> 
    <BoxView BackgroundColor="{Binding BoxColor}" Grid.Column="0"/> 
    <Label FontSize="14" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Text="{Binding Test}" Grid.Column="1"/> 
    <Label FontSize="14" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Text="{Binding Test}" Grid.Column="2"/> 
    <Label FontSize="14" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Text="{Binding Test}" Grid.Column="3"/> 
    <Label FontSize="14" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Text="{Binding Test}" Grid.Column="4"/> 
    <Label FontSize="14" HorizontalTextAlignment="Center" VerticalTextAlignment="Center" Text="{Binding Test}" Grid.Column="5"/> 
    <Label FontSize="14" HorizontalTextAlignment="End" Margin="0,0,5,0" VerticalTextAlignment="Center" Text="{Binding Test}" Grid.Column="6"/> 
    <Label FontSize="14" HorizontalTextAlignment="End" Margin="0,0,5,0" VerticalTextAlignment="Center" Text="{Binding Test}" Grid.Column="7"/> 
    </Grid> 
</ViewCell> 

のListView

<ListView x:Name="ListViewKalkulation" 
      Margin="1,0,1,1" 
      ItemTapped="ListViewKalkulationText_OnItemTapped" 
      ItemTemplate="{StaticResource TemplateSelector}" 
      ChildAdded="ListViewKalkulation_OnChildAdded" 
      ItemSelected="ListViewKalkulation_OnItemSelected" 
      SeparatorVisibility="None" 
      BackgroundColor="Silver" 
      Grid.Row="1" /> 

あなたの時間をありがとう!

+0

こんにちは、たぶん、あなたは問題の詳細informtationを提供し、あなたのviewcellをレンダリング、カスタマーたい理由を言及していいだろう。ユースケースのシナリオはいいだろう:) – BraveHeart

+0

Hej、申し訳ありませんが、問題は明らかだと思っていた:)私はちょうどそれら(私が考えていた醜い灰色の色)と対話するときにリストビューの項目のハイライトを無効にしたいおそらくそれは私のリストビューの項目としてビューのセルを使用しているので可能性はありません –

答えて

3

問題はViewCellにないため、問題を解決するためにカスタムレンダラーは必要ありません。問題は単にListViewの動作に起因しています。アイテムまたはアイテムの一部をListViewにタッチすると、ListViewは、セルの内容が文字列のように単純かどうか、または状況に応じて複雑であるかどうかにかかわらず、ハイライトします。

あなたがViewCellのために、顧客のレンダラを使用したい場合は

ListViewKalkulation.SelectedItem = null; 
  • を使用する「ListViewKalkulation_OnItemSelected」 を扱うときに次の2つのオプションの背後にあるコードで

    1. を持っているあなたの問題を解決するために、私がanother solutionから得たこのコードを試してみてください。

      public override UITableViewCell GetCell(Cell item, UITableView tv) 
      { 
          var cell = base.GetCell(item, tv); 
      
          cell.SelectedBackgroundView = new UIView { 
           BackgroundColor = UIColor.DarkGray, 
          }; 
      
          return cell; 
      } 
      
  • +0

    ご返信遅れて申し訳ありません、あなたはどこに右!これについては決して考えなかった。これは私の問題を解決していただきありがとうございます! –

    関連する問題