2016-04-10 7 views
4

現在、私はセル全体の背景イメージを効果的に使用するために作成したカスタムのCellViewテンプレートを持ち、テキストオーバーレイを持っています。Selected ItemハイライトされたリストビューのXamarin.Forms

これを絶対レイアウトで行い、カスタムセルテンプレートをListViewにバインドしました。
私の問題は、一見、もはや選択時にセルを強調表示できなくなることです。

私は私の問題は、(適切な背景画像として最初のスタックレイアウトにそれをない追加することで)、セルの背景の100%を占めた画像から発信されていること、あるいは私のカスタムViewCell実装はItemSelectionを実装していないことを推測しています正しく。

ListViewのセルには、デフォルトで何らかの選択ハイライトが表示されています。それはデフォルトのListViewで動作していましたが、画像の外側のセルの小さなセグメントで相対レイアウトを使用していましたが。
私はセルをハイライトすることができました。

画像は実際にはハイライトされませんでした。だから、私はイメージが問題だと思っているのです。

は、私はそれが選択されていることを示すためにいくつかの色で

ハイライト蛇口のセル全体のイメージとすべてを達成したい何か。共有コード(PCL)内。

これまで、非表示のBoxViewを作成して、透明度をクリックして表示するようにしました。しかし私は実際にこれをItemSelected()の使用で起こらせる方法を理解できませんでした。コード化された解決策を求めているのではなく、むしろ正しい方向の指を求めています。しかし、私はコード化された解決策に異議を申し立てません。

public CustomViewCell() 
    { 
     var someLabel= new Label(); 
     someLabel.SetBinding (Label.TextProperty, "someLabel"); 

     var someImage = new Image() { 
      Aspect = Aspect.AspectFill, 
     }; 
     someImage.SetBinding (Image.SourceProperty, "ImageSource"); 

     AbsoluteLayout.SetLayoutFlags (someImage, AbsoluteLayoutFlags.All); 
     AbsoluteLayout.SetLayoutBounds (someImage, new Rectangle (0f, 0f, 1f, 1f)); 

     AbsoluteLayout.SetLayoutFlags (someLabel, AbsoluteLayoutFlags.PositionProportional); 
     AbsoluteLayout.SetLayoutBounds (someLabel, 
      new Rectangle (0.1, 0.85, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize) 
     ); 

     AbsoluteLayout theLayout = new AbsoluteLayout { 
      HeightRequest = 50, 
      BackgroundColor = Color.Black 
     }; 

     theLayout.Children.Add (someImage); 
     theLayout.Children.Add (someLabel); 

     this.View = theLayout; 
    } 
} 

この後、私はバインディング用の基本アクセサを用意し、リストを作成した/テンプレートを適用しました。必要な場合は私が提供することができますが、彼らは基本的です。

答えて

0

ヘイズ。 Item Selected Propertyを使用してこれを変数にバインドし、その後でそれを使用して必要な処理を実行する必要があります(たとえば、リスト内のすべての項目にNameプロパティを使用してチェックします)。

私はそれをテストしていなかった、私はあなたがアイデアをキャッチすると思います。今、あなたはNameプロパティを持って、

MenuItems = new ObservableCollection<MasterPageMenuItemModel> 
      { 
       new MasterPageMenuItemModel {Name = "GistsPage", ImageSource = GistsPageImagePath}, 
       new MasterPageMenuItemModel {Name = "IssueDashboardPage", ImageSource = IssueDashboardPageImagePath}, 
       new MasterPageMenuItemModel {Name = "BookmarksPage", ImageSource = BookmarksPageImagePath}, 
       new MasterPageMenuItemModel {Name = "ReportAnIssuePage", ImageSource = ReportAnIssuePageImagePath} 
      }; 

OK:

はここであなたのリストです。 はその後、あなたの財産とそれを結合するための「選択した項目を」使用:あなたはItemSelectedイベントを使用することができます必要なときにそれをチェックするために

<ListView x:Name="MasterPageMenu" 
        SeparatorColor="Transparent" 
        AbsoluteLayout.LayoutBounds="{Binding MasterMenuBounds}" 
        AbsoluteLayout.LayoutFlags="None" 
        ItemsSource="{Binding MenuItems}" 
        SelectedItem="{Binding MenuItemSelectedProperty, Mode=TwoWay}"> 

を。 Nameプロパティでバインド可能なプロパティを使用して、それを使用して必要な処理を行います。

+0

コードを入力してください。 –

関連する問題