initial commit

This commit is contained in:
Matthias Heil
2026-08-10 14:46:18 +02:00
commit c946aa63e6
69 changed files with 8865 additions and 0 deletions
+191
View File
@@ -0,0 +1,191 @@
# PropertyGrid Fix - Missing Style Include
## Critical Issue Found! ✅
### The Root Cause
The PropertyGrid control template and styles were **never loaded** into the application!
The `PropertyGrid.axaml` file contains all the control's visual template and styles, but it was never included in the Application's style resources.
### The Fix
**Added StyleInclude to both App.axaml files:**
#### QuickStartExample/App.axaml
```xml
<Application xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="QuickStartExample.App">
<Application.Styles>
<FluentTheme />
<StyleInclude Source="avares://Avalonia.PropertyGrid/Controls/PropertyGrid.axaml" />
</Application.Styles>
</Application>
```
#### AdvancedExample/App.axaml
```xml
<Application xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="AdvancedExample.App"
RequestedThemeVariant="Default">
<Application.Styles>
<FluentTheme />
<StyleInclude Source="avares://Avalonia.PropertyGrid/Controls/PropertyGrid.axaml" />
</Application.Styles>
</Application>
```
### What This Does
The `StyleInclude` loads the PropertyGrid's styles and control template from the PropertyGrid assembly:
```
avares://Avalonia.PropertyGrid/Controls/PropertyGrid.axaml
└─ Assembly name
└─ Path to style file
```
This includes:
1. **Control Template** - The visual structure (search box, ItemsControl, etc.)
2. **Data Templates** - How PropertyItems are rendered
3. **Converters** - All the type converters as resources
4. **Default Styles** - Background colors, borders, etc.
Without this line, the PropertyGrid control had **no visual template** at all - it was rendering as an empty control!
## Why This Was the Problem
### Before Fix
```
PropertyGrid control created
├─ No template found (no styles loaded)
├─ Renders as empty/invisible
└─ Properties not displayed (no ItemsControl to show them!)
```
### After Fix
```
PropertyGrid control created
├─ Finds template from PropertyGrid.axaml
├─ Applies ControlTemplate with:
│ ├─ Search box
│ ├─ ItemsControl for properties
│ └─ Data templates for each property
└─ Properties displayed! ✅
```
## Additional Improvements Made
### 1. Simplified Property Editor (PropertyGrid.axaml)
Changed from complex Panel with multiple editors to simple TextBox for all properties:
```xml
<!-- Simple TextBox for all properties - testing -->
<TextBox Text="{Binding Value, Mode=TwoWay}"
IsReadOnly="{Binding IsReadOnly}"
HorizontalAlignment="Stretch" />
```
This ensures everything shows up first. We can add back specialized editors later.
### 2. Added Debug Counter
Shows how many properties are loaded:
```xml
<TextBlock Text="{Binding $parent[controls:PropertyGrid].FilteredProperties.Count, StringFormat='Properties: {0}'}"
FontSize="10"
Foreground="Gray" />
```
This displays "Properties: 10" (or however many) at the top of the PropertyGrid.
### 3. Direct SelectedObject Assignment (already done)
Sets the PropertyGrid's SelectedObject directly in code to bypass binding issues.
### 4. Debug Output (already done)
Added WriteLine statements to track property loading.
## Files Changed
| File | Change |
|------|--------|
| `Examples/QuickStartExample/App.axaml` | Added StyleInclude for PropertyGrid |
| `Examples/AdvancedExample/App.axaml` | Added StyleInclude for PropertyGrid |
| `Avalonia.PropertyGrid/Controls/PropertyGrid.axaml` | Simplified editor, added debug counter |
| `Examples/QuickStartExample/MainWindow.axaml.cs` | Direct SelectedObject assignment (earlier) |
| `Examples/AdvancedExample/MainWindow.axaml.cs` | Direct SelectedObject assignment (earlier) |
## Expected Result
### Visual Changes
✅ Search box at top
✅ "Properties: 10" counter (for QuickStartExample)
✅ Properties list:
- Left column: Property names (Make, Model, Year, etc.)
- Right column: TextBox editors with values
### Debug Output
```
PropertyGrid found and SelectedObject set directly
PropertyGrid: SelectedObject changed to Vehicle
PropertyGrid: Created 10 property items
PropertyGrid: FilteredProperties count = 10
```
## To Test
### Run QuickStartExample
```sh
dotnet run --project Examples/QuickStartExample/QuickStartExample.csproj
```
**You should see:**
- Window opens
- PropertyGrid with search box
- "Properties: 10" text
- 10 rows with property names and editable values
### Run AdvancedExample
```sh
dotnet run --project Examples/AdvancedExample/AdvancedExample.csproj
```
**You should see:**
- Window opens
- PropertyGrid with search box
- "Properties: 25" (or more) text
- All advanced properties displayed
## Next Steps (After Verification)
Once we confirm properties are showing:
1. **Add Back Specialized Editors**
- CheckBox for booleans
- ComboBox for enums
- NumericUpDown for numbers
- DatePicker for DateTime
2. **Add Category Grouping**
- Group properties by category
- Collapsible category headers
3. **Enhance Search**
- Highlight matching text
- Search in category names
4. **Polish UI**
- Better spacing
- Hover effects
- Selection highlighting
## Summary
The PropertyGrid wasn't showing because its styles were never loaded into the application. Added `<StyleInclude Source="avares://Avalonia.PropertyGrid/Controls/PropertyGrid.axaml" />` to both App.axaml files.
**Status**: ✅ Built successfully - PropertyGrid template now loaded!
---
**This should fix the visibility issue!** The control now has its visual template.