or
Dim style As StyleDefinition = SelectedEditor.CurrentEditingStyle Dim fontWeight As TextStyle = DirectCast(style.GetPropertyValue(Span.FontStyleProperty), TextStyle) btnFontBold.Checked = fontWeight = TextStyle.Bold If fontWeight = TextStyle.Bold Then btnFontBold.Checked = True ElseIf fontWeight = TextStyle.Italic Then btnFontItalic.Checked = True End If

public partial class Form1 : Form { private BindingList<Node> AllNodes = new BindingList<Node>(); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { LoadData(); } public void LoadData() { LoadAllNodes(); grid.DataSource = AllNodes; LoadAllObjectColumns(grid.MasterTemplate); // Load child template GridViewTemplate template = new GridViewTemplate(); LoadAllObjectColumns(template); grid.MasterTemplate.Templates.Add(template); GridViewRelation r = new GridViewRelation(grid.MasterTemplate, template); r.ChildColumnNames.Add("Children"); grid.Relations.Add(r); } public void LoadAllNodes() { Node p1 = new Node("Parent 1", ItemStatus.None); Node n1 = new Node("Child 1", ItemStatus.None); Node n2 = new Node("Child 2", ItemStatus.None); p1.Children.Add(n1); p1.Children.Add(n2); AllNodes.Add(p1); Node p2 = new Node("Parent 2", ItemStatus.None); AllNodes.Add(p2); } public static void LoadAllObjectColumns(GridViewTemplate template) { template.Columns.Clear(); template.EnableFiltering = true; template.AllowAddNewRow = false; template.AutoGenerateColumns = false; GridViewTextBoxColumn colName = new GridViewTextBoxColumn("Name"); colName.HeaderText = "Name"; colName.Name = "Name"; template.Columns.Add(colName); GridViewComboBoxColumn colStatus = new GridViewComboBoxColumn("Status"); colStatus.HeaderText = "Status"; colStatus.Name = "Status"; colStatus.DataSource = Enum.GetValues(typeof(ItemStatus)).Cast<ItemStatus>(); template.Columns.Add(colStatus); template.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; } public enum ItemStatus { None, New, Test, Complete }; public class Node : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void NotifyPropertyChanged(String info) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(info)); } } private string name; private ItemStatus status; private BindingList<Node> children; public string Name { get { return name; } set { if (name != value) { name = value; NotifyPropertyChanged("Name"); } } } public ItemStatus Status { get { return status; } set { if (status != value) { status = value; NotifyPropertyChanged("Status"); } } } public BindingList<Node> Children { get { return children; } set { children = value; } } public Node(string name, ItemStatus status) { this.name = name; this.status = status; children = new BindingList<Node>(); } } }