Files
PropertyGrid/PROPERTYGRID_FINAL_FIX.md
T
2026-08-10 14:46:18 +02:00

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:

  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:

<!-- 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:

  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.