Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace ExtendedControlsLibrary.Skinning.CustomPropertyGrid
- {
- // See the DevExpress suport question:
- // https://www.devexpress.com/Support/Center/Question/Details/Q539013
- using System.ComponentModel;
- using System.Drawing;
- using DevExpress.Utils;
- using DevExpress.XtraVerticalGrid;
- using DevExpress.XtraVerticalGrid.Events;
- using DevExpress.XtraVerticalGrid.Rows;
- using DevExpress.XtraVerticalGrid.ViewInfo;
- public class MyPropertyGridControl :
- PropertyGridControl
- {
- private bool _wantAlternatingRows;
- private bool _eventConnected;
- private AppearanceObject _alternatingRowStyle;
- private AppearanceObject _normalRowStyle;
- [DefaultValue(false)]
- public bool WantAlternatingRows
- {
- get { return _wantAlternatingRows; }
- set
- {
- _wantAlternatingRows = value;
- checkConnectEvent();
- }
- }
- private void checkConnectEvent()
- {
- if (!_eventConnected)
- {
- _eventConnected = true;
- _alternatingRowStyle = new AppearanceObject
- {
- BackColor = SkinHelper.AlternatingGridRowColors
- };
- CustomDrawRowHeaderCell += MyPropertyGridControl_CustomDrawRowHeaderCell;
- CustomDrawRowValueCell += MyPropertyGridControl_CustomDrawRowValueCell;
- CustomDrawRowHeaderIndent += MyPropertyGridControl_CustomDrawRowHeaderIndent;
- CustomDrawTreeButton += MyPropertyGridControl_CustomDrawTreeButton;
- }
- }
- private void MyPropertyGridControl_CustomDrawTreeButton(object sender, CustomDrawTreeButtonEventArgs e)
- {
- applyDrawing(e);
- }
- private void MyPropertyGridControl_CustomDrawRowHeaderIndent(
- object sender, CustomDrawRowHeaderIndentEventArgs e)
- {
- if (applyDrawing(e))
- {
- if (e.Row.VisibleIndex%2 == 0)
- {
- foreach (IndentInfo info in e.RowIndents)
- {
- info.Style.Combine(_alternatingRowStyle);
- }
- }
- else
- {
- foreach (IndentInfo info in e.RowIndents)
- {
- info.Style.Combine(checkGetNormalRowStyle(e.Row));
- }
- }
- }
- }
- private void MyPropertyGridControl_CustomDrawRowHeaderCell(
- object sender, CustomDrawRowHeaderCellEventArgs e)
- {
- applyDrawing(e);
- }
- private void MyPropertyGridControl_CustomDrawRowValueCell(
- object sender, CustomDrawRowValueCellEventArgs e)
- {
- applyDrawing(e);
- }
- private bool applyDrawing(CustomDrawRowEventArgs e)
- {
- if (WantAlternatingRows && !(e.Row is CategoryRow) && FocusedRow != e.Row)
- {
- if (e.Row.VisibleIndex%2 == 0)
- {
- e.Appearance.Combine(_alternatingRowStyle);
- }
- else
- {
- e.Appearance.Combine(checkGetNormalRowStyle(e.Row));
- }
- return true;
- }
- else
- {
- return false;
- }
- }
- private AppearanceObject checkGetNormalRowStyle(BaseRow row)
- {
- return _normalRowStyle ??
- (_normalRowStyle = new AppearanceObject
- {
- BackColor =
- row.Appearance.BackColor == Color.Empty ? SystemColors.Window : row.Appearance.BackColor
- });
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement