Create responsive layouts based on Window width breakpoints
UnoFeatures: Toolkit (add to <UnoFeatures> in your .csproj)
Show different content by width
<Page
xmlns:utu="using:Uno.Toolkit.UI">
<utu:ResponsiveView>
<utu:ResponsiveView.NarrowTemplate>
<DataTemplate>
<!-- Stack for phones -->
<StackPanel Spacing="8">
<TextBlock Text="Narrow" />
<!-- phone-friendly content -->
</StackPanel>
</DataTemplate>
</utu:ResponsiveView.NarrowTemplate>
<utu:ResponsiveView.WideTemplate>
<DataTemplate>
<!-- Grid for tablets/desktop -->
<Grid ColumnDefinitions="*,*">
<TextBlock Text="Wide" Grid.ColumnSpan="2" />
<!-- wide layout -->
</Grid>
</DataTemplate>
</utu:ResponsiveView.WideTemplate>
</utu:ResponsiveView>
</Page>
ResponsiveView picks the first defined template whose breakpoint is met; if none match, it falls back to the largest defined template. (Uno Platform)
Change the breakpoints (per-control)
<Page
xmlns:utu="using:Uno.Toolkit.UI">
<utu:ResponsiveView>
<utu:ResponsiveView.ResponsiveLayout>
<utu:ResponsiveLayout
Narrow="360"
Normal="640"
Wide="1024"
Widest="1440" />
</utu:ResponsiveView.ResponsiveLayout>
<utu:ResponsiveView.NarrowTemplate>
<DataTemplate> <!-- ... --> </DataTemplate>
</utu:ResponsiveView.NarrowTemplate>
<utu:ResponsiveView.WideTemplate>
<DataTemplate> <!-- ... --> </DataTemplate>
</utu:ResponsiveView.WideTemplate>
</utu:ResponsiveView>
</Page>
ResponsiveLayout lets you override breakpoints for Narrowest, Narrow, Normal, Wide, Widest (defaults: 150, 300, 600, 800, 1080). (Uno Platform)
Set app-wide default breakpoints
<Application
xmlns:utu="using:Uno.Toolkit.UI">
<Application.Resources>
<utu:ResponsiveLayout x:Key="DefaultResponsiveLayout"
Narrow="360"
Normal="640"
Wide="1024"
Widest="1440" />
</Application.Resources>
</Application>
Precedence for where the layout is taken from:
ResponsiveView.ResponsiveLayoutDefaultResponsiveLayoutin parent/ancestor resourcesDefaultResponsiveLayoutinApplication.Resources- Built-in default
[150/300/600/800/1080]. (Uno Platform)
Use only two templates (phone vs. desktop)
<utu:ResponsiveView>
<utu:ResponsiveView.NarrowTemplate>
<DataTemplate> <!-- phone layout --> </DataTemplate>
</utu:ResponsiveView.NarrowTemplate>
<utu:ResponsiveView.WideTemplate>
<DataTemplate> <!-- desktop/tablet layout --> </DataTemplate>
</utu:ResponsiveView.WideTemplate>
</utu:ResponsiveView>
You don't need to define all five templates. ResponsiveView chooses from what you provide and still resolves correctly. (Uno Platform)
FAQs (quick)
- What are the default breakpoints? 150, 300, 600, 800, 1080. (Uno Platform)
- How is the template picked? Discard undefined layouts, pick the first whose breakpoint is met by current width; if none, return the first of remaining (effectively the largest defined). (Uno Platform)
- Do I need all five templates? No—define the minimum you need. (Uno Platform)
- Where should I set app-wide breakpoints? Add
ResponsiveLayoutasDefaultResponsiveLayoutin resources (page or app), or set it per control. (Uno Platform) - What features do I need? Add
Toolkitto<UnoFeatures>(andMaterialorCupertinoif you use those design system packages). (Uno Platform)
Copy-paste snippets
Minimal XAML
<utu:ResponsiveView xmlns:utu="using:Uno.Toolkit.UI">
<utu:ResponsiveView.NarrowTemplate>
<DataTemplate><TextBlock Text="Narrow"/></DataTemplate>
</utu:ResponsiveView.NarrowTemplate>
<utu:ResponsiveView.WideTemplate>
<DataTemplate><TextBlock Text="Wide"/></DataTemplate>
</utu:ResponsiveView.WideTemplate>
</utu:ResponsiveView>
Customize breakpoints
<utu:ResponsiveView xmlns:utu="using:Uno.Toolkit.UI">
<utu:ResponsiveView.ResponsiveLayout>
<utu:ResponsiveLayout Narrow="360" Wide="1024" />
</utu:ResponsiveView.ResponsiveLayout>
<!-- templates -->
</utu:ResponsiveView>
Notes for RAG indexers
- Primary concepts:
ResponsiveView,ResponsiveLayout, breakpoints, template selection precedence. (Uno Platform) - Related: ResponsiveExtension for property-level responsiveness (pairs well with
ResponsiveViewwhen you don't need template swapping). (Uno Platform)
Source page summarized & refactored for outcome-oriented how-tos. (Uno Platform)