private void OnButtonPropertyChanged(object sender, PropertyChangedEventArgs e) { bool updateLayout = false; bool updatePaint = false; switch (e.PropertyName) { case "SelectedColor": case "EmptyBorderColor": case "SelectedRectSmall": case "SelectedRectLarge": _viewMediumSmallImage.SelectedColorRectChanged(); _viewLargeImage.SelectedColorRectChanged(); updatePaint = true; break; case "Visible": updateLayout = true; break; case "TextLine1": _viewLargeText1.MakeDirty(); _viewMediumSmallText1.MakeDirty(); updateLayout = true; break; case "TextLine2": _viewLargeText2.MakeDirty(); _viewMediumSmallText2.MakeDirty(); UpdateDropDownState(); updateLayout = true; break; case "ButtonType": UpdateDropDownState(); updateLayout = true; break; case "Checked": UpdateCheckedState(); updatePaint = true; break; case "Enabled": UpdateEnabledState(); updatePaint = true; break; case "ImageLarge": case "ImageSmall": _viewMediumSmallImage.SelectedColorRectChanged(); _viewLargeImage.SelectedColorRectChanged(); updatePaint = true; break; case "ItemSizeMinimum": case "ItemSizeMaximum": case "ItemSizeCurrent": UpdateItemSizeState(); updateLayout = true; break; case "KryptonCommand": _viewLargeText1.MakeDirty(); _viewLargeText2.MakeDirty(); _viewLargeImage.SelectedColorRectChanged(); _viewMediumSmallText1.MakeDirty(); _viewMediumSmallText2.MakeDirty(); _viewMediumSmallImage.SelectedColorRectChanged(); UpdateEnabledState(); UpdateCheckedState(); updateLayout = true; break; } if (updateLayout) { // If we are on the currently selected tab then... if ((GroupColorButton.RibbonTab != null) && (_ribbon.SelectedTab == GroupColorButton.RibbonTab)) { // ...layout so the visible change is made OnNeedPaint(true); } } if (updatePaint) { // If this button is actually defined as visible... if (GroupColorButton.Visible || _ribbon.InDesignMode) { // ...and on the currently selected tab then... if ((GroupColorButton.RibbonTab != null) && (_ribbon.SelectedTab == GroupColorButton.RibbonTab)) { // ...repaint it right now OnNeedPaint(false, ClientRectangle); } } } }