2016-07-22 2 views
0

현재 ObservableCollection에 바인딩 된 템플릿 선택기가있는 사용자 지정 ViewCell이 있습니다. Ive는 사용자 정의 셀 템플릿을 내 Xamarin.Forms IOS ListView에 바인딩합니다.Xamarin.Forms ListView with CustomViewCell 사용 안 함 선택된 항목 색

내 문제는 내가 선택한 항목의 강조 표시를 사용하지 못할 것입니다 내가 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

안녕하세요, 어쩌면 당신은 당신이 당신의 viewcell 렌더링 손님하려는 이유를 언급 좋을 것이다 문제에 대한 자세한 informtation을 제공합니다. 유스 케이스 시나리오가 좋을 것입니다 :) – BraveHeart

+0

Hej, 미안 해요. 문제가 분명하다고 생각했습니다. :) Listview 항목의 강조 표시를 사용하지 않을 것입니다. (생각하지 않은 추한 회색 색상) 생각하고있었습니다. 아마 내 목록보기 항목으로보기 셀을 사용하기 때문에 가능하지 않습니다 –

답변

3

문제는 ViewCell에 없으므로 문제를 해결하기 위해 사용자 지정 렌더러가 필요하지 않습니다. 문제는 단순히 ListView의 동작 때문입니다. 항목을 터치하거나 ListView에있는 항목의 일부를 터치하면 ListView이 셀의 내용이 문자열만큼 단순한 지 아니면 상황에 따라 복잡하든 관계없이 항목을 강조 표시합니다.

당신이 ViewCell에 대한 고객의 렌더러를 사용하려는 경우

ListViewKalkulation.SelectedItem = null; 
  • 을 사용하여 "ListViewKalkulation_OnItemSelected" 을 처리 할 때 두 가지 옵션 뒤에 코드에서

    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

    늦은 답장을 드려 죄송합니다. 이것에 대해서는 절대로 생각하지 마십시오. 이게 내 문제를 해결해 주셔서 감사합니다! –

    관련 문제