Git Product home page Git Product logo

Comments (1)

SergejDK avatar SergejDK commented on May 27, 2024

@nghia-bui just to be clear - you don't want to be able to highlight any row in the list? Or better would be if you have a example app where I can check this directly.

If it is the case you can do the following:

  1. Create a customrenderer in this example I did it with iOS.
type MyListViewRenderer() =
    inherit ListViewRenderer()

    override this.OnElementPropertyChanged(sender: obj, e: PropertyChangedEventArgs) =
        base.OnElementPropertyChanged(sender, e)

        match e.PropertyName with
        | "SelectedItem" ->
            match this.Element, this.Control with
            | null, null -> ()
            | _ ->
                this.Control.VisibleCells
                |> Array.iter (fun v -> v.SelectionStyle <- UITableViewCellSelectionStyle.None )
        | _ -> ()
  1. Export this Renderer
[<assembly: ExportRenderer(typeof<Fabulous.XamarinForms.CustomListView>, typeof<MyListViewRenderer>)>]

This way the renderer is going to work for every View.ListView.

If you only want to modify one specific ListView then you need to create your own type as follows:

module TestListViewModule =
    type TLV() = inherit CustomListView()
    
    type Fabulous.XamarinForms.View with 
    
            static member inline TestListView(?items: ViewElement list, ?itemAppearing: int -> unit, ?itemSelected: int option -> unit) = 
    
                let attribCount = 0
                let attribs = ViewBuilders.BuildListView(attribCount, ?items=items, ?itemAppearing=itemAppearing, ?itemSelected=itemSelected)

                let update (prevOpt: ViewElement voption) (source: ViewElement) (target: TLV) =
                    ViewBuilders.UpdateListView(prevOpt, source, target)
                    
                let updateAttachedProperties propertyKey prevOpt source targetChild =
                    ViewBuilders.UpdateListViewAttachedProperties(propertyKey, prevOpt, source, targetChild)
    
                ViewElement.Create<TLV>(TLV, update, updateAttachedProperties, attribs)

And to make it work for this specific type you have to change the export part.
In the following example just use the path to your type.

[<assembly: ExportRenderer(typeof<AllControls.Samples.TestListViewModule.TLV>, typeof<MyListViewRenderer>)>]

from fabulous.xamarinforms.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.