HypernovaDesktop Components · docs
Binarymission
WPF › Ribbon › BinaryRibbonBarPanel

BinaryRibbonBarPanel

class.NET 6 / 8 / 10.NET Framework 4.8Binarymission.WPF.Controls.Office

BinaryRibbonBarPanel also known as Ribbon bar, is the Ribbon panel control where you can host all ribbon child controls.

public partial class BinaryRibbonBarPanel : Control

Inherits from / implements: Control

Remarks

How this control works. The ribbon is a tab strip over one group panel. Its content is Tabs; the selected tab's groups are laid out by the group panel ( PART_GroupPanel ), and when the ribbon is collapsed the same groups drop over the document in a popup ( PART_Popup , PART_PopupGroupPanel ) when a tab is clicked. One concern per partial file: DisplayState (how much of the ribbon shows; Ctrl+F1), Layout (classic or simplified), QuickAccess (the context menu and the quick access toolbar), Density (touch mode) and Resources (what it merges into the application). When the groups do not fit, they give way one at a time from the far end, each becoming a single drop-down button, with a measure after each; galleries shrink first. Skins. Colours and shapes are resources keyed by BinaryRibbonThemeResources . BinaryRibbonBuiltInSkinController.Skin swaps the dictionary that defines them: the Office skins from XAML, the colour skins from tables in code, and the Fluent skins from the skin manager's palette, which the rest of the suite follows too. Keyboard and tips. Key tips ( BinaryKeyTip.AccessKey ) show on Alt or F10, level by level: a tab's tip, then its commands'. Screen tips ( BinaryRibbonScreenTip ) attach to any command, with F1 for help; galleries raise live-preview routed events for an application to preview, commit or cancel a change. Right to left follows the window's FlowDirection, with command pictures left unmirrored.

Members at a glance

BinaryRibbonBarPanelInitializes a new instance of the BinaryRibbonBarPanel class.
AlignGroupsLeftCommandGets the "align groups to left" Routed UI command.
AlignGroupsRightCommandGets the "align groups right" command.
ApplicationMenuGets or sets the instance of the BinaryRibbonApplicationMenu.
BackgroundColorGets or sets the background color.
CanMinimizeGets or sets whether only the tab strip is shown, with the commands dropped over the document when a tab is chosen.
CanUserChangeRibbonLayoutGets or sets whether the user is offered the choice between the classic and the simplified ribbon.
CollapseRibbonBarCommandGets the "collapse ribbon bar" command.
ContextualTabSetGets or sets the contextual tab set.
ContextualTabSetsGets the contextual tab sets.
CurrentlyVisibleTabItemsGets the currently visible tab items.
DisplayStateGets or sets how much of the ribbon is on screen.
IsDisplayStateShortcutEnabledGets or sets whether Ctrl+F1 switches the ribbon between its display states.
IsExpandedGets or sets a value indicating whether this instance is expanded.
IsMenuOpenGets or sets a value indicating whether the application menu instance is currently open.
IsMinimizedGets or sets a value indicating whether this instance is currently minimized.
IsRibbonContextMenuEnabledGets or sets whether right-clicking the ribbon offers its own context menu.
IsRibbonControlVisibleGets or sets a value indicating whether this ribbon control instance is visible.
IsTouchModeGets whether the ribbon is laid out for touch: each small command on a taller row and space between the columns, as Office's touch mode has them.
LogicalChildrenGets the children this element contributes to the logical tree.
QuickAccessToolBarGets or sets the Quick Access Toolbar (QAT) instance.
RibbonLayoutGets or sets how the ribbon lays its commands out.
SelectedGroupsGets or sets the selected groups.
SelectedTabIndexGets or sets the index of the selected tab.
SelectedTabItemGets or sets the selected tab item.
TabsGets the collection of tabs in the control.
TitleTextGets or sets the window title text.
ToolbarPlacementLocationGets or sets the toolbar placement location.
AddToQuickAccessToolBarPuts a command on the quick access toolbar.
ArrangeOverridePlaces the children within the space this element was given, and reports the space it actually used.
GetCommandIdGets the identity a ribbon command is remembered by.
GetMaxSizeGets the maximum size mode.
GetMinSizeGets the minimum size mode.
GetQuickAccessSourceGets the command a quick access toolbar shortcut stands for.
GetQuickAccessToolBarStateWhat the quick access toolbar holds, and where it sits, as one string.
GetResizableSizeGets the resizable size colection.
GetSizeGets the size mode the control is currently in.
IndexOfVisibleTabA helper method to return the visible index of the given tab item.
OnApplyTemplateWhen overridden in a derived class, is invoked whenever application code or internal processes call ApplyTemplate.
OnContextualTabSetChangedCalled when the ContextualTabSet dependency property changes.
OnContextualTabSetsChangedCalled when the contextual tab sets collection changes, which is where this control brings its layout back in step with its contents.
OnIsBarExpandedChangedCalled when the IsBarExpanded dependency property changes.
OnLostKeyboardFocusRaises the LostKeyboardFocus event. BinaryRibbonBarPanel overrides it so the control's own handling runs alongside the base behavior.
OnLostMouseCaptureRaises the LostMouseCapture event. BinaryRibbonBarPanel overrides it so the control's own handling runs alongside the base behavior.
OnPopupCloseCalled when this control's drop-down popup closes. Override to react to it without having to attach to the popup yourself.
OnPopupOpenCalled when this control's drop-down popup opens. Override to react to it without having to attach to the popup yourself.
OnPreviewMouseLeftButtonDownRaises the PreviewMouseLeftButtonDown event. BinaryRibbonBarPanel overrides it so the control's own handling runs alongside the base behavior.
OnPreviewMouseRightButtonUpRaises the PreviewMouseRightButtonUp event.
OnSelectedGroupsChangedCallbackCalled when the SelectedGroups dependency property changes.
OnSelectedTabIndexChangedCalled when the SelectedTabIndex dependency property changes.
OnTabItemCollectionChangedCalled when the tab item collection changes, which is where this control brings its layout back in step with its contents.
OnVisualParentChangedCalled when this element is moved to a different visual parent.
RemoveFromQuickAccessToolBarTakes a command off the quick access toolbar.
SetCommandIdSets the identity a ribbon command is remembered by.
SetGroupRenderingAlignmentSets how the groups on the current tab are aligned along the bar. The base does nothing; a derived bar overrides it to lay its groups out its own way.
SetMaxSizeSets the maximum size mode.
SetMinSizeSets the minimum size mode.
SetQuickAccessSourceSets the command a quick access toolbar shortcut stands for.
SetQuickAccessToolBarStatePuts the quick access toolbar back as it was.
SetResizableSizeGets the resizable size colection.
SetSizeSets the size mode the control is currently to be in.
ToggleDisplayStateSwitches between showing the commands and showing only the tabs.
ToggleRibbonLayoutSwitches between the classic and the simplified ribbon.
VisibleTabFromIndexA helper method to return the visible tabl item, given an index.
SelectedTabIndexChangedOccurs when selected tab index changes.
ApplicationMenuPropertyApplicationMenuProperty property.
BackgroundColorPropertyBackgroundColorProperty property.
CanMinimizePropertyCanMinimizeProperty property.
CanUserChangeRibbonLayoutPropertyIdentifies the CanUserChangeRibbonLayout dependency property.
CommandIdPropertyIdentifies the CommandId attached property.
ContextualTabSetPropertyContextualTabSetProperty property.
DisplayStatePropertyIdentifies the DisplayState dependency property.
IsDisplayStateShortcutEnabledPropertyIdentifies the IsDisplayStateShortcutEnabled dependency property.
IsExpandedPropertyIsExpandedProperty property.
IsMenuOpenPropertyIsMenuOpenProperty property.
IsMinimizedPropertyIsMinimizedProperty property.
IsRibbonContextMenuEnabledPropertyIdentifies the IsRibbonContextMenuEnabled dependency property.
IsRibbonControlVisiblePropertyIsRibbonControlVisibleProperty property.
MaxSizePropertyMaxSizeProperty attached property.
MinSizePropertyMinSizeProperty attached property.
QuickAccessSourcePropertyIdentifies the QuickAccessSource attached property.
QuickAccessToolBarPropertyQuickAccessToolBarProperty property.
ResizableSizePropertyResizableSizeProperty attached property.
RibbonLayoutPropertyIdentifies the RibbonLayout dependency property.
SelectedGroupsPropertySelectedGroupsProperty property.
SelectedTabIndexChangedEventSelectedTabIndexChangedEvent Routed event instance.
SelectedTabIndexPropertySelectedTabIndexProperty property.
SizePropertySizeProperty attached property.
TitleTextPropertyTitleTextProperty property.
ToolbarPlacementLocationPropertyToolbarPlacementLocationProperty property.

Constructors

BinaryRibbonBarPanel

public BinaryRibbonBarPanel() : base()

Initializes a new instance of the BinaryRibbonBarPanel class.

Properties

AlignGroupsLeftCommand

public static RoutedUICommand AlignGroupsLeftCommand

Gets the "align groups to left" Routed UI command.

AlignGroupsRightCommand

public static RoutedUICommand AlignGroupsRightCommand

Gets the "align groups right" command.

Value. The align groups right command.

ApplicationMenu

public IBinaryRibbonApplicationMenu ApplicationMenu

Gets or sets the instance of the BinaryRibbonApplicationMenu.

Value. The application menu.

BackgroundColor

public Color BackgroundColor

Gets or sets the background color.

CanMinimize

public bool CanMinimize

Gets or sets whether only the tab strip is shown, with the commands dropped over the document when a tab is chosen.

Value. true while only the tabs are shown. The default is false .

The name reads as a capability and the property has always been a state: it is what a double-click on a tab toggles. It is kept because applications are built against it, and it is two names for one thing with DisplayState, which is the one to use in new code. Setting either moves the other.

CanUserChangeRibbonLayout

public bool CanUserChangeRibbonLayout

Gets or sets whether the user is offered the choice between the classic and the simplified ribbon.

Value. true to offer it. The default is true .

When false , neither the ribbon's context menu nor the window's ribbon display options offer the two layouts; RibbonLayout still works from code.

CollapseRibbonBarCommand

public static RoutedCommand CollapseRibbonBarCommand

Gets the "collapse ribbon bar" command.

Value. The collapse ribbon bar command.

ContextualTabSet

public BinaryRibbonControlContextualTabSet ContextualTabSet

Gets or sets the contextual tab set.

Value. The contextual tab set.

ContextualTabSets

public Collection<BinaryRibbonControlContextualTabSet> ContextualTabSets

Gets the contextual tab sets.

Value. The contextual tab sets.

CurrentlyVisibleTabItems

public IEnumerable<BinaryRibbonTabItem> CurrentlyVisibleTabItems

Gets the currently visible tab items.

Value. The currently visible tab items.

DisplayState

public BinaryRibbonDisplayState DisplayState

Gets or sets how much of the ribbon is on screen.

Value. The display state. The default is ShowTabsAndCommands.

This and CanMinimize are two names for one state and are kept in step: CanMinimize is the older spelling, kept because applications are built against it, and it reads as a capability while it has always been a state. New code should use this property, which says what it means and has room for the states still to come.

IsDisplayStateShortcutEnabled

public bool IsDisplayStateShortcutEnabled

Gets or sets whether Ctrl+F1 switches the ribbon between its display states.

Value. true to answer the key. The default is true .

Set to false in an application that binds Ctrl+F1 to something of its own.

IsExpanded

public bool IsExpanded

Gets or sets a value indicating whether this instance is expanded.

Value. true if this instance is expanded; otherwise, false .

IsMenuOpen

public bool IsMenuOpen

Gets or sets a value indicating whether the application menu instance is currently open.

IsMinimized

public bool IsMinimized

Gets or sets a value indicating whether this instance is currently minimized.

Value. true if this instance is minimized; otherwise, false .

IsRibbonContextMenuEnabled

public bool IsRibbonContextMenuEnabled

Gets or sets whether right-clicking the ribbon offers its own context menu.

Value. true to offer it. The default is true .

Set to false in an application that puts its own context menu on the ribbon.

IsRibbonControlVisible

public bool IsRibbonControlVisible

Gets or sets a value indicating whether this ribbon control instance is visible.

IsTouchMode

public bool IsTouchMode

Gets whether the ribbon is laid out for touch: each small command on a taller row and space between the columns, as Office's touch mode has them.

Value. true while BinarySkinManager.Density is Touch. The density is the application's, so every ribbon in it follows the same setting; set it there - an application offering Office's Touch/Mouse Mode command sets it from that.

LogicalChildren

protected override IEnumerator LogicalChildren

Gets the children this element contributes to the logical tree.

QuickAccessToolBar

public BinaryRibbonQuickAccessToolBar QuickAccessToolBar

Gets or sets the Quick Access Toolbar (QAT) instance.

RibbonLayout

public BinaryRibbonLayout RibbonLayout

Gets or sets how the ribbon lays its commands out.

Value. The layout. The default is Classic.

Independent of DisplayState: a simplified ribbon can still show only its tabs, or hide altogether, and the commands it drops over the document are then a single line as well. The ribbon saves nothing itself; an application that wants the user's choice to survive a restart stores this value with its other settings.

SelectedGroups

public Collection<BinaryRibbonGroup> SelectedGroups

Gets or sets the selected groups.

Value. The selected groups.

SelectedTabIndex

public int SelectedTabIndex

Gets or sets the index of the selected tab.

Value. The index of the selected tab.

SelectedTabItem

public BinaryRibbonTabItem SelectedTabItem

Gets or sets the selected tab item.

Value. The selected tab item.

Tabs

public Collection<BinaryRibbonTabItem> Tabs

Gets the collection of tabs in the control.

TitleText

public object TitleText

Gets or sets the window title text.

Value. The title text.

ToolbarPlacementLocation

public QuickAccessToolbarPlacementLocation ToolbarPlacementLocation

Gets or sets the toolbar placement location.

Value. The toolbar placement location.

Methods

AddToQuickAccessToolBar

public void AddToQuickAccessToolBar(UIElement command)

Puts a command on the quick access toolbar.

command
The command, which stays where it is on the ribbon.
A small button is added that carries the command's own picture and raises the command's own click - the ribbon control itself is not moved or reparented. A control can only be in one place in a visual tree, and the ribbon is where it belongs.

ArrangeOverride

protected override Size ArrangeOverride(Size arrangeBounds)

Places the children within the space this element was given, and reports the space it actually used.

GetCommandId

public static string GetCommandId(DependencyObject element)

Gets the identity a ribbon command is remembered by.

element
The command.

Returns. The identity, or null if it has none.

GetMaxSize

public static BinaryRibbonControlSize GetMaxSize(DependencyObject obj)

Gets the maximum size mode.

obj
The obj.

GetMinSize

public static BinaryRibbonControlSize GetMinSize(DependencyObject obj)

Gets the minimum size mode.

GetQuickAccessSource

public static object GetQuickAccessSource(DependencyObject element)

Gets the command a quick access toolbar shortcut stands for.

element
The shortcut on the toolbar.

Returns. The command on the ribbon, or null if this is not a shortcut.

GetQuickAccessToolBarState

public string GetQuickAccessToolBarState()

What the quick access toolbar holds, and where it sits, as one string.

Returns. A string to keep and hand back to SetQuickAccessToolBarState, or an empty string when there is nothing to remember.

The control does not save anything itself: where a user's settings belong is the application's business, not a control's. Only commands carrying a CommandIdProperty can be written down.

GetResizableSize

public static BinaryRibbonControlSizeCollection GetResizableSize(DependencyObject obj)

Gets the resizable size colection.

GetSize

public static BinaryRibbonControlSize GetSize(DependencyObject obj)

Gets the size mode the control is currently in.

IndexOfVisibleTab

public int IndexOfVisibleTab(BinaryRibbonTabItem tabItem)

A helper method to return the visible index of the given tab item.

tabItem
The tab item.

OnApplyTemplate

public override void OnApplyTemplate()

When overridden in a derived class, is invoked whenever application code or internal processes call ApplyTemplate.

OnContextualTabSetChanged

protected virtual void OnContextualTabSetChanged(DependencyPropertyChangedEventArgs e)

Called when the ContextualTabSet dependency property changes.

e
The old and new values of the property.

OnContextualTabSetsChanged

protected virtual void OnContextualTabSetsChanged(object sender, NotifyCollectionChangedEventArgs e)

Called when the contextual tab sets collection changes, which is where this control brings its layout back in step with its contents.

sender
The collection that changed.
e
What was added, removed or moved.

OnIsBarExpandedChanged

protected virtual void OnIsBarExpandedChanged(DependencyPropertyChangedEventArgs e)

Called when the IsBarExpanded dependency property changes.

e
The old and new values of the property.

OnLostKeyboardFocus

protected override void OnLostKeyboardFocus(KeyboardFocusChangedEventArgs e)

Raises the LostKeyboardFocus event. BinaryRibbonBarPanel overrides it so the control's own handling runs alongside the base behavior.

e
The data for the event.

OnLostMouseCapture

protected override void OnLostMouseCapture(MouseEventArgs e)

Raises the LostMouseCapture event. BinaryRibbonBarPanel overrides it so the control's own handling runs alongside the base behavior.

e
The data for the event.

OnPopupClose

protected virtual void OnPopupClose(object sender, EventArgs e)

Called when this control's drop-down popup closes. Override to react to it without having to attach to the popup yourself.

sender
The popup.
e
Not used.

OnPopupOpen

protected virtual void OnPopupOpen(object sender, EventArgs e)

Called when this control's drop-down popup opens. Override to react to it without having to attach to the popup yourself.

sender
The popup.
e
Not used.

OnPreviewMouseLeftButtonDown

protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)

Raises the PreviewMouseLeftButtonDown event. BinaryRibbonBarPanel overrides it so the control's own handling runs alongside the base behavior.

e
The data for the event.

OnPreviewMouseRightButtonUp

protected override void OnPreviewMouseRightButtonUp(MouseButtonEventArgs e)

Raises the PreviewMouseRightButtonUp event.

e
The data for the event.
On the button coming up, not going down: a right-click that is going to open a menu should not also leave the control under it looking pressed.

OnSelectedGroupsChangedCallback

protected virtual void OnSelectedGroupsChangedCallback(DependencyPropertyChangedEventArgs e)

Called when the SelectedGroups dependency property changes.

e
The old and new values of the property.

OnSelectedTabIndexChanged

protected virtual void OnSelectedTabIndexChanged(DependencyPropertyChangedEventArgs e)

Called when the SelectedTabIndex dependency property changes.

e
The old and new values of the property.

OnTabItemCollectionChanged

protected virtual void OnTabItemCollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)

Called when the tab item collection changes, which is where this control brings its layout back in step with its contents.

sender
The collection that changed.
e
What was added, removed or moved.

OnVisualParentChanged

protected override void OnVisualParentChanged(DependencyObject oldVisualParent)

Called when this element is moved to a different visual parent.

RemoveFromQuickAccessToolBar

public void RemoveFromQuickAccessToolBar(UIElement command)

Takes a command off the quick access toolbar.

command
The command, or the shortcut standing for it.

SetCommandId

public static void SetCommandId(DependencyObject element, string value)

Sets the identity a ribbon command is remembered by.

element
The command.
value
An identity, unique within this ribbon and stable between runs.

SetGroupRenderingAlignment

protected virtual void SetGroupRenderingAlignment(BinaryRibbonBarRenderingAlignment alignment)

Sets how the groups on the current tab are aligned along the bar. The base does nothing; a derived bar overrides it to lay its groups out its own way.

alignment
The alignment to apply.

SetMaxSize

public static void SetMaxSize(DependencyObject obj, BinaryRibbonControlSize value)

Sets the maximum size mode.

obj
The obj.
value
The value.

SetMinSize

public static void SetMinSize(DependencyObject obj, BinaryRibbonControlSize value)

Sets the minimum size mode.

SetQuickAccessSource

public static void SetQuickAccessSource(DependencyObject element, object value)

Sets the command a quick access toolbar shortcut stands for.

element
The shortcut on the toolbar.
value
The command on the ribbon.

SetQuickAccessToolBarState

public void SetQuickAccessToolBarState(string state)

Puts the quick access toolbar back as it was.

state
What GetQuickAccessToolBarState returned.
Commands whose identity is no longer in the ribbon are skipped rather than refused: a saved setting outliving the command it names is ordinary, and it should not stop the rest of the toolbar being restored.

SetResizableSize

public static void SetResizableSize(DependencyObject obj, BinaryRibbonControlSizeCollection value)

Gets the resizable size colection.

SetSize

public static void SetSize(DependencyObject obj, BinaryRibbonControlSize value)

Sets the size mode the control is currently to be in.

ToggleDisplayState

public void ToggleDisplayState()

Switches between showing the commands and showing only the tabs.

What Ctrl+F1 and a double-click on a tab both do. From any state other than ShowTabsAndCommands it brings the whole ribbon back, so that it is always the way out of a ribbon that is not on screen.

ToggleRibbonLayout

public void ToggleRibbonLayout()

Switches between the classic and the simplified ribbon.

VisibleTabFromIndex

public BinaryRibbonTabItem VisibleTabFromIndex(int index)

A helper method to return the visible tabl item, given an index.

index
The index.

Events

SelectedTabIndexChanged

public event RoutedEventHandler SelectedTabIndexChanged

Occurs when selected tab index changes.

Fields

ApplicationMenuProperty

public static readonly DependencyProperty ApplicationMenuProperty

ApplicationMenuProperty property.

BackgroundColorProperty

public static readonly DependencyProperty BackgroundColorProperty

BackgroundColorProperty property.

CanMinimizeProperty

public static readonly DependencyProperty CanMinimizeProperty

CanMinimizeProperty property.

CanUserChangeRibbonLayoutProperty

public static readonly DependencyProperty CanUserChangeRibbonLayoutProperty

Identifies the CanUserChangeRibbonLayout dependency property.

CommandIdProperty

public static readonly DependencyProperty CommandIdProperty

Identifies the CommandId attached property.

Its own property rather than the existing BinaryRibbonTag : that tag belongs to the application, and a control that reads an application's tag for its own purposes takes something the application was told it could have. A command with no identity can still be put on the quick access toolbar by hand; it just cannot be remembered between runs, because there would be nothing to write down.

ContextualTabSetProperty

public static readonly DependencyProperty ContextualTabSetProperty

ContextualTabSetProperty property.

DisplayStateProperty

public static readonly DependencyProperty DisplayStateProperty

Identifies the DisplayState dependency property.

IsDisplayStateShortcutEnabledProperty

public static readonly DependencyProperty IsDisplayStateShortcutEnabledProperty

Identifies the IsDisplayStateShortcutEnabled dependency property.

IsExpandedProperty

public static readonly DependencyProperty IsExpandedProperty

IsExpandedProperty property.

IsMenuOpenProperty

public static readonly DependencyProperty IsMenuOpenProperty

IsMenuOpenProperty property.

IsMinimizedProperty

public static readonly DependencyProperty IsMinimizedProperty

IsMinimizedProperty property.

IsRibbonContextMenuEnabledProperty

public static readonly DependencyProperty IsRibbonContextMenuEnabledProperty

Identifies the IsRibbonContextMenuEnabled dependency property.

IsRibbonControlVisibleProperty

public static readonly DependencyProperty IsRibbonControlVisibleProperty

IsRibbonControlVisibleProperty property.

MaxSizeProperty

public static readonly DependencyProperty MaxSizeProperty

MaxSizeProperty attached property.

MinSizeProperty

public static readonly DependencyProperty MinSizeProperty

MinSizeProperty attached property.

QuickAccessSourceProperty

public static readonly DependencyProperty QuickAccessSourceProperty

Identifies the QuickAccessSource attached property.

QuickAccessToolBarProperty

public static readonly DependencyProperty QuickAccessToolBarProperty

QuickAccessToolBarProperty property.

ResizableSizeProperty

public static readonly DependencyProperty ResizableSizeProperty

ResizableSizeProperty attached property.

RibbonLayoutProperty

public static readonly DependencyProperty RibbonLayoutProperty

Identifies the RibbonLayout dependency property.

SelectedGroupsProperty

public static readonly DependencyProperty SelectedGroupsProperty

SelectedGroupsProperty property.

SelectedTabIndexChangedEvent

public static readonly RoutedEvent SelectedTabIndexChangedEvent

SelectedTabIndexChangedEvent Routed event instance.

SelectedTabIndexProperty

public static readonly DependencyProperty SelectedTabIndexProperty

SelectedTabIndexProperty property.

SizeProperty

public static readonly DependencyProperty SizeProperty

SizeProperty attached property.

TitleTextProperty

public static readonly DependencyProperty TitleTextProperty

TitleTextProperty property.

ToolbarPlacementLocationProperty

public static readonly DependencyProperty ToolbarPlacementLocationProperty

ToolbarPlacementLocationProperty property.