{"id":"3df4eba4-4a57-4027-9eb3-6b833c8da537","shortId":"PrPafh","kind":"skill","title":"syncfusion-maui-pull-to-refresh","tagline":"Implements the Syncfusion .NET MAUI PullToRefresh (SfPullToRefresh) control for interactive content refreshing. Use when working with pull-to-refresh, refresh controls, swipe to refresh, or updating content on pull gestures. Covers scenarios for refreshing ListView, DataGrid, or ","description":"# Implementing .NET MAUI PullToRefresh (SfPullToRefresh)\n\nThe Syncfusion .NET MAUI PullToRefresh control enables interactive content refreshing through pull-down gestures. It displays a progress indicator during the pull action and triggers content updates when the user releases after pulling beyond a threshold distance.\n\n## When to Use This Skill\n\nUse this skill when you need to:\n\n- **Implement pull-to-refresh functionality** in .NET MAUI applications for refreshing content on demand\n- **Add interactive refresh controls** to scrollable views like ListView, DataGrid, or custom layouts\n- **Display refresh indicators** with progress animations during pull-to-refresh actions\n- **Customize refresh appearance** including colors, sizes, transition modes, and thresholds\n- **Create custom refresh templates** with progress bars or animated views\n- **Integrate MVVM patterns** with refresh commands and data binding\n- **Handle refresh events** for controlling pulling, refreshing, and completion actions\n- **Host complex views** within pullable content areas with proper refresh behavior\n\n## Component Overview\n\n- Interactive pull-to-refresh gesture recognition\n- Two transition modes: SlideOnTop and Push\n- Customizable progress indicator appearance\n- Support for hosting any .NET MAUI view as pullable content\n- MVVM-compatible with RefreshCommand and data binding\n- Custom templates for pulling and refreshing views\n- Built-in events for fine-grained refresh control\n- Programmatic refresh initiation and completion\n\n\n## Documentation and Navigation Guide\n\n### Getting Started\n📄 **Read:** [references/getting-started.md](references/getting-started.md)\n\nWhen to read: First-time setup, installation, basic implementation\n- Installing Syncfusion.Maui.PullToRefresh NuGet package\n- Registering Syncfusion handler (ConfigureSyncfusionCore)\n- Creating basic SfPullToRefresh instance\n- Defining PullableContent\n- Handling IsRefreshing property\n- Running your first pull-to-refresh application\n\n### Pullable Content\n📄 **Read:** [references/pullable-content.md](references/pullable-content.md)\n\nWhen to read: Configuring content that responds to pull gestures\n- Understanding PullableContent property\n- Hosting .NET MAUI DataGrid in PullToRefresh\n- Hosting .NET MAUI ListView in PullToRefresh\n- Loading custom views and layouts\n- Best practices for pullable content configuration\n- Handling content refresh with different views\n\n### Customization and Properties\n📄 **Read:** [references/customization.md](references/customization.md)\n\nWhen to read: Customizing appearance, behavior, thresholds, and transition modes\n- TransitionMode: SlideOnTop vs Push animations\n- PullingThreshold and RefreshViewThreshold configuration\n- IsRefreshing property for refresh state control\n- Progress indicator customization (color, thickness, size)\n- RefreshViewWidth and RefreshViewHeight properties\n- ProgressBackground, ProgressColor, ProgressThickness\n- Programmatic methods: StartRefreshing() and EndRefreshing()\n- Size and layout considerations\n\n### Custom Templates\n📄 **Read:** [references/templates.md](references/templates.md)\n\nWhen to read: Creating custom pulling and refreshing views\n- PullingViewTemplate property\n- RefreshingViewTemplate property\n- Using SfCircularProgressBar in templates\n- Creating DataTemplate for custom progress indicators\n- Integrating templates with Pulling event\n- Animating refresh views\n- Template customization examples\n\n### MVVM and Commands\n📄 **Read:** [references/mvvm-commands.md](references/mvvm-commands.md)\n\nWhen to read: Implementing MVVM pattern with PullToRefresh\n- MVVM compatibility overview\n- Binding IsRefreshing to ViewModel properties\n- Using RefreshCommand and RefreshCommandParameter\n- CanExecute() method for controlling refresh actions\n- INotifyPropertyChanged implementation\n- Complete ViewModel examples\n- Canceling pull actions from ViewModel\n\n### Events\n📄 **Read:** [references/events.md](references/events.md)\n\nWhen to read: Handling pull-to-refresh lifecycle events\n- Pulling event with PullingEventArgs\n- Refreshing event on pointer release\n- Refreshed event on completion\n- Cancel property for preventing refresh\n- Progress property for tracking pull distance\n- Event handling patterns and examples","tags":["syncfusion","maui","pull","refresh","components","skills","agent-skills"],"capabilities":["skill","source-syncfusion","skill-syncfusion-maui-pull-to-refresh","topic-agent-skills"],"categories":["maui-ui-components-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/syncfusion/maui-ui-components-skills/syncfusion-maui-pull-to-refresh","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add syncfusion/maui-ui-components-skills","source_repo":"https://github.com/syncfusion/maui-ui-components-skills","install_from":"skills.sh"}},"qualityScore":"0.476","qualityRationale":"deterministic score 0.48 from registry signals: · indexed on github topic:agent-skills · 53 github stars · SKILL.md body (4,253 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T00:56:08.958Z","embedding":null,"createdAt":"2026-04-18T22:15:35.652Z","updatedAt":"2026-04-22T00:56:08.958Z","lastSeenAt":"2026-04-22T00:56:08.958Z","tsv":"'action':73,139,178,463,471 'add':115 'anim':133,158,360,426 'appear':142,208,350 'applic':109,292 'area':185 'bar':156 'basic':266,277 'behavior':189,351 'best':328 'beyond':84 'bind':168,226,449 'built':235 'built-in':234 'cancel':469,501 'canexecut':458 'color':144,374 'command':165,434 'compat':221,447 'complet':177,248,466,500 'complex':180 'compon':190 'configur':301,333,364 'configuresyncfusioncor':275 'consider':392 'content':17,34,58,76,112,184,218,294,302,332,335 'control':14,28,55,118,173,243,370,461 'cover':38 'creat':150,276,401,415 'custom':126,140,151,227,324,340,349,373,393,402,418,430 'customiz':205 'data':167,225 'datagrid':43,124,314 'datatempl':416 'defin':280 'demand':114 'differ':338 'display':66,128 'distanc':87,511 'document':249 'enabl':56 'endrefresh':388 'event':171,237,425,474,487,489,493,498,512 'exampl':431,468,516 'fine':240 'fine-grain':239 'first':262,287 'first-tim':261 'function':105 'gestur':37,64,197,307 'get':253 'grain':241 'guid':252 'handl':169,282,334,481,513 'handler':274 'host':179,211,311,317 'implement':7,45,100,267,441,465 'includ':143 'indic':69,130,207,372,420 'initi':246 'inotifypropertychang':464 'instal':265,268 'instanc':279 'integr':160,421 'interact':16,57,116,192 'isrefresh':283,365,450 'layout':127,327,391 'lifecycl':486 'like':122 'listview':42,123,320 'load':323 'maui':3,11,47,53,108,214,313,319 'method':385,459 'mode':147,201,355 'mvvm':161,220,432,442,446 'mvvm-compat':219 'navig':251 'need':98 'net':10,46,52,107,213,312,318 'nuget':270 'overview':191,448 'packag':271 'pattern':162,443,514 'pointer':495 'practic':329 'prevent':504 'programmat':244,384 'progress':68,132,155,206,371,419,506 'progressbackground':381 'progresscolor':382 'progressthick':383 'proper':187 'properti':284,310,342,366,380,408,410,453,502,507 'pull':4,24,36,62,72,83,102,136,174,194,230,289,306,403,424,470,483,488,510 'pull-down':61 'pull-to-refresh':23,101,135,193,288,482 'pullabl':183,217,293,331 'pullablecont':281,309 'pullingeventarg':491 'pullingthreshold':361 'pullingviewtempl':407 'pulltorefresh':12,48,54,316,322,445 'push':204,359 'read':255,260,295,300,343,348,395,400,435,440,475,480 'recognit':198 'references/customization.md':344,345 'references/events.md':476,477 'references/getting-started.md':256,257 'references/mvvm-commands.md':436,437 'references/pullable-content.md':296,297 'references/templates.md':396,397 'refresh':6,18,26,27,31,41,59,104,111,117,129,138,141,152,164,170,175,188,196,232,242,245,291,336,368,405,427,462,485,492,497,505 'refreshcommand':223,455 'refreshcommandparamet':457 'refreshingviewtempl':409 'refreshviewheight':379 'refreshviewthreshold':363 'refreshviewwidth':377 'regist':272 'releas':81,496 'respond':304 'run':285 'scenario':39 'scrollabl':120 'setup':264 'sfcircularprogressbar':412 'sfpulltorefresh':13,49,278 'size':145,376,389 'skill':92,95 'skill-syncfusion-maui-pull-to-refresh' 'slideontop':202,357 'source-syncfusion' 'start':254 'startrefresh':386 'state':369 'support':209 'swipe':29 'syncfus':2,9,51,273 'syncfusion-maui-pull-to-refresh':1 'syncfusion.maui.pulltorefresh':269 'templat':153,228,394,414,422,429 'thick':375 'threshold':86,149,352 'time':263 'topic-agent-skills' 'track':509 'transit':146,200,354 'transitionmod':356 'trigger':75 'two':199 'understand':308 'updat':33,77 'use':19,90,93,411,454 'user':80 'view':121,159,181,215,233,325,339,406,428 'viewmodel':452,467,473 'vs':358 'within':182 'work':21","prices":[{"id":"ad449f18-a2c2-429b-bda0-2ead2d32fc94","listingId":"3df4eba4-4a57-4027-9eb3-6b833c8da537","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"syncfusion","category":"maui-ui-components-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:15:35.652Z"}],"sources":[{"listingId":"3df4eba4-4a57-4027-9eb3-6b833c8da537","source":"github","sourceId":"syncfusion/maui-ui-components-skills/syncfusion-maui-pull-to-refresh","sourceUrl":"https://github.com/syncfusion/maui-ui-components-skills/tree/master/skills/syncfusion-maui-pull-to-refresh","isPrimary":false,"firstSeenAt":"2026-04-18T22:15:35.652Z","lastSeenAt":"2026-04-22T00:56:08.958Z"}],"details":{"listingId":"3df4eba4-4a57-4027-9eb3-6b833c8da537","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"syncfusion","slug":"syncfusion-maui-pull-to-refresh","github":{"repo":"syncfusion/maui-ui-components-skills","stars":53,"topics":["agent-skills"],"license":null,"html_url":"https://github.com/syncfusion/maui-ui-components-skills","pushed_at":"2026-04-08T07:27:37Z","description":"Skills for Syncfusion .NET MAUI components. Enable AI-assisted development with comprehensive documentation, code examples, and best practices for 100+ UI controls including DataGrid, Charts, Scheduler, and more.","skill_md_sha":"3a664c19f24b0b1ae2bb01ec619f69d8ba23baf9","skill_md_path":"skills/syncfusion-maui-pull-to-refresh/SKILL.md","default_branch":"master","skill_tree_url":"https://github.com/syncfusion/maui-ui-components-skills/tree/master/skills/syncfusion-maui-pull-to-refresh"},"layout":"multi","source":"github","category":"maui-ui-components-skills","frontmatter":{"name":"syncfusion-maui-pull-to-refresh","description":"Implements the Syncfusion .NET MAUI PullToRefresh (SfPullToRefresh) control for interactive content refreshing. Use when working with pull-to-refresh, refresh controls, swipe to refresh, or updating content on pull gestures. Covers scenarios for refreshing ListView, DataGrid, or any scrollable content, customizing refresh indicators, MVVM refresh patterns, and pull-to-refresh events."},"skills_sh_url":"https://skills.sh/syncfusion/maui-ui-components-skills/syncfusion-maui-pull-to-refresh"},"updatedAt":"2026-04-22T00:56:08.958Z"}}