initial commit
This commit is contained in:
@@ -0,0 +1,174 @@
|
||||
# PropertyGrid Examples
|
||||
|
||||
This directory contains example applications demonstrating the Avalonia PropertyGrid control.
|
||||
|
||||
## Available Examples
|
||||
|
||||
### 1. QuickStartExample
|
||||
**Difficulty:** Beginner
|
||||
**Focus:** Basic PropertyGrid usage
|
||||
|
||||
A simple example showing fundamental PropertyGrid features:
|
||||
- Basic property types (string, int, decimal, bool, enum)
|
||||
- Property categories
|
||||
- Display names and descriptions
|
||||
- Read-only properties
|
||||
- DateTime properties
|
||||
|
||||
Perfect for getting started with PropertyGrid.
|
||||
|
||||
➡️ [View QuickStartExample](./QuickStartExample/)
|
||||
|
||||
**To run:**
|
||||
```bash
|
||||
dotnet run --project Examples/QuickStartExample/QuickStartExample.csproj
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. AdvancedExample ⭐ NEW
|
||||
**Difficulty:** Advanced
|
||||
**Focus:** Complex scenarios and enterprise features
|
||||
|
||||
A comprehensive example demonstrating advanced PropertyGrid capabilities:
|
||||
- **Nested Objects** - DatabaseSettings and NetworkSettings
|
||||
- **Data Validation** - Required, Range, StringLength attributes
|
||||
- **INotifyPropertyChanged** - Real-time property updates
|
||||
- **Computed Properties** - Dynamic read-only properties
|
||||
- **7 Categories** - Organized configuration sections
|
||||
- **25+ Properties** - Complex data model
|
||||
- **Multiple Data Types** - TimeSpan, Guid, Lists, and more
|
||||
- **Enum Descriptions** - User-friendly enum values
|
||||
- **Password Fields** - Secure property display
|
||||
|
||||
Ideal for understanding production-level usage.
|
||||
|
||||
➡️ [View AdvancedExample](./AdvancedExample/)
|
||||
|
||||
**To run:**
|
||||
```bash
|
||||
dotnet run --project Examples/AdvancedExample/AdvancedExample.csproj
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Feature Comparison
|
||||
|
||||
| Feature | QuickStartExample | AdvancedExample |
|
||||
|---------|-------------------|-----------------|
|
||||
| **Properties** | ~10 | 25+ |
|
||||
| **Categories** | 5 | 7 |
|
||||
| **Nested Objects** | ❌ | ✅ (2 levels) |
|
||||
| **Validation** | ❌ | ✅ (Required, Range, Length) |
|
||||
| **Change Notifications** | ❌ | ✅ (INotifyPropertyChanged) |
|
||||
| **Computed Properties** | ❌ | ✅ |
|
||||
| **Password Fields** | ❌ | ✅ |
|
||||
| **Collections** | ❌ | ✅ (List<string>) |
|
||||
| **Metadata** | ❌ | ✅ (Guid, DateTime tracking) |
|
||||
| **Data Types** | Basic | Extended (TimeSpan, Guid, etc.) |
|
||||
| **Read-Only Properties** | ✅ (1) | ✅ (4) |
|
||||
| **Descriptions** | ✅ | ✅ (Detailed) |
|
||||
|
||||
## Building All Examples
|
||||
|
||||
Build all examples at once:
|
||||
```bash
|
||||
dotnet build
|
||||
```
|
||||
|
||||
Or build individually:
|
||||
```bash
|
||||
dotnet build Examples/QuickStartExample/QuickStartExample.csproj
|
||||
dotnet build Examples/AdvancedExample/AdvancedExample.csproj
|
||||
```
|
||||
|
||||
## Learning Path
|
||||
|
||||
1. **Start with QuickStartExample** - Learn the basics
|
||||
- Property binding
|
||||
- Categories and descriptions
|
||||
- Basic data types
|
||||
|
||||
2. **Move to AdvancedExample** - Master advanced features
|
||||
- Nested objects
|
||||
- Validation
|
||||
- Change notifications
|
||||
- Complex data models
|
||||
|
||||
## Common Use Cases
|
||||
|
||||
### QuickStartExample is great for:
|
||||
- Learning PropertyGrid basics
|
||||
- Simple configuration editors
|
||||
- Prototyping
|
||||
- Single-level property editing
|
||||
|
||||
### AdvancedExample is great for:
|
||||
- Enterprise applications
|
||||
- Complex configuration management
|
||||
- Settings dialogs with validation
|
||||
- Hierarchical data editing
|
||||
- Production-ready implementations
|
||||
|
||||
## Key PropertyGrid Features
|
||||
|
||||
Both examples demonstrate PropertyGrid's core capabilities:
|
||||
|
||||
### 🎨 Visual Features
|
||||
- Category grouping with collapsible sections
|
||||
- Property descriptions
|
||||
- Search/filter functionality
|
||||
- Modern Fluent UI design
|
||||
|
||||
### 🔧 Data Binding
|
||||
- Two-way binding
|
||||
- Multiple data types support
|
||||
- Enum support with descriptions
|
||||
- DateTime pickers
|
||||
|
||||
### 📋 Metadata Support
|
||||
- `[Display]` - Names, descriptions, ordering
|
||||
- `[Category]` - Logical grouping
|
||||
- `[ReadOnly]` - Immutable properties
|
||||
- `[Required]`, `[Range]`, `[StringLength]` - Validation
|
||||
- `[PasswordPropertyText]` - Secure input
|
||||
- `[EditorBrowsable]` - Advanced property grouping
|
||||
|
||||
### 🔄 Dynamic Features
|
||||
- INotifyPropertyChanged support
|
||||
- Real-time updates
|
||||
- Computed properties
|
||||
- Conditional property display
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Build Issues
|
||||
If you encounter build errors, ensure:
|
||||
1. You're targeting .NET 10
|
||||
2. Avalonia packages are version 12.1.0 or compatible
|
||||
3. The solution includes the PropertyGrid project reference
|
||||
|
||||
### Runtime Issues
|
||||
- Ensure `x:DataType` is set on the Window element for compiled bindings
|
||||
- Verify all namespaces are correctly imported
|
||||
- Check that model classes are public
|
||||
|
||||
## Contributing
|
||||
|
||||
Want to add more examples? Consider these ideas:
|
||||
- Multi-object editing example
|
||||
- Custom property editor example
|
||||
- Dynamic property generation example
|
||||
- Settings persistence example
|
||||
- Theme customization example
|
||||
|
||||
## Support
|
||||
|
||||
For issues or questions about PropertyGrid:
|
||||
1. Check the examples documentation
|
||||
2. Review the PropertyGrid source code
|
||||
3. Open an issue in the repository
|
||||
|
||||
---
|
||||
|
||||
**Happy coding with PropertyGrid!** 🚀
|
||||
Reference in New Issue
Block a user