XAML:
<Window x:Class="PropertyGridDemo.Test" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:pg="clr-namespace:Syncfusion.Windows.PropertyGrid;assembly=Syncfusion.PropertyGrid.Wpf" xmlns:dg="clr-namespace:Syncfusion.Windows.Controls.Grid;assembly=Syncfusion.Grid.Wpf" Title="Test" Height="500" Width="800"> <Grid> <Grid.RowDefinitions > <RowDefinition ></RowDefinition> <RowDefinition ></RowDefinition> <RowDefinition ></RowDefinition> </Grid.RowDefinitions> <pg:PropertyGrid Grid.Row="2" Name="pg" PropertyExpandMode="NestedMode" EnableGrouping="True" SelectedObject="{Binding ElementName=lb,Path=SelectedItem,Mode=TwoWay}" ></pg:PropertyGrid> <ListBox Name="lb" Grid.Row="1" ItemsSource="{Binding ElementName=dg,Path=VisibleColumns,Mode=TwoWay}" DisplayMemberPath="MappingName"></ListBox> <dg:GridDataControl Name="dg" AutoPopulateColumns="True" ItemsSourceChanged="dg_ItemsSourceChanged" Grid.Row="0"></dg:GridDataControl> </Grid> </Window>
Backend code:
public partial class Test : Window { public Test() { InitializeComponent(); this.dg.ItemsSource = Data.Gets(); } }
public class Data { public int ID { get; set; } public string Name { get; set; } public bool IsMale { get; set; } public static IEnumerable Gets() { List<Data> data = new List<Data>(); for (int i = 0; i < 100; i++) data.Add(new Data { ID = i, Name = "Name" + i, IsMale = i % 3 == 2 }); return data; } }
Screenshot: