# TodoApp Sample
A complete task management application demonstrating OpenMaui Linux capabilities with real-world XAML patterns.
## Features
- **NavigationPage** - Full page navigation with back button support
- **CollectionView** - Scrollable list with data binding and selection
- **XAML Data Binding** - Value converters for dynamic styling
- **DisplayAlert Dialogs** - Confirmation dialogs for delete actions
- **Grid Layouts** - Complex layouts with star sizing for expanding content
- **Entry & Editor** - Single and multi-line text input
- **Border with RoundRectangle** - Modern card-style UI
- **ToolbarItems** - Navigation bar actions
## Screenshots
The app consists of three pages:
1. **TodoListPage** - Shows all tasks with completion status indicators
2. **NewTodoPage** - Create a new task with title and notes
3. **TodoDetailPage** - View/edit task details, mark complete, or delete
## Architecture
```
TodoApp/
├── App.cs # Application entry with NavigationPage
├── Program.cs # Linux platform bootstrap
├── MauiProgram.cs # MAUI app builder
├── TodoItem.cs # Data model
├── TodoService.cs # In-memory data store
├── TodoListPage.xaml(.cs) # Main list view
├── NewTodoPage.xaml(.cs) # Create task page
└── TodoDetailPage.xaml(.cs) # Task detail/edit page
```
## XAML Highlights
### Value Converters
The app uses custom converters for dynamic styling based on completion status:
- `CompletedToColorConverter` - Gray text for completed items
- `CompletedToTextDecorationsConverter` - Strikethrough for completed items
- `CompletedToOpacityConverter` - Fade completed items
- `AlternatingRowColorConverter` - Alternating background colors
### ResourceDictionary
```xml
#5C6BC0
#26A69A
#212121
```
### CollectionView with DataTemplate
```xml
```
### Grid with Star Rows (Expanding Editor)
```xml
```
## Building and Running
```bash
# From the maui-linux-push directory
cd samples/TodoApp
dotnet publish -c Release -r linux-arm64
# Run on Linux
./bin/Release/net9.0/linux-arm64/publish/TodoApp
```
## Controls Demonstrated
| Control | Usage |
|---------|-------|
| NavigationPage | App navigation container |
| ContentPage | Individual screens |
| CollectionView | Task list with selection |
| Grid | Page layouts |
| VerticalStackLayout | Vertical grouping |
| HorizontalStackLayout | Horizontal grouping |
| Label | Text display |
| Entry | Single-line input |
| Editor | Multi-line input |
| Button | Toolbar actions |
| Border | Card styling with rounded corners |
| CheckBox | Completion toggle |
| BoxView | Visual separators |
## License
MIT License - See repository root for details.