5.5 KiB
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
<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
<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:
- Control Template - The visual structure (search box, ItemsControl, etc.)
- Data Templates - How PropertyItems are rendered
- Converters - All the type converters as resources
- 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:
<!-- 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:
<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
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
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:
-
Add Back Specialized Editors
- CheckBox for booleans
- ComboBox for enums
- NumericUpDown for numbers
- DatePicker for DateTime
-
Add Category Grouping
- Group properties by category
- Collapsible category headers
-
Enhance Search
- Highlight matching text
- Search in category names
-
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.