Commands
The .NET MAUI framework and the Rock Mobile application shell both utilize Commands to manage most actions and events. When a button is tapped, a Command executes. Typically, a Command is accessible via a Command
property, although sometimes a view may support multiple Commands, in which case their names vary. Additionally, each Command can accept a parameter to fine-tune how it performs its task.
Since all Commands follow the same structure, you can use any Command anywhere. For instance, a Command configured for a button to open a browser window can also be assigned to a swipe gesture, enabling a browser to open when an individual swipes the screen.
Below, you’ll find details about various Commands. But first, here’s a quick example of using Commands. Here’s how to set up a button to open a browser window when tapped:
Here, we bind the button's Command
to the built-in OpenBrowser
handler and pass the URL via the CommandParameter
. Now, let’s add a textbox where an individual can enter a search term, using that term in the URL.
In this example, we create an inline object in XAML within the CommandParameter
property of the button. The <Rock:OpenBrowserParameters>
object sets the base URL, and the nested parameters are appended as query strings. We define a parameter q
, which Google uses for the search term. By binding the textbox's value dynamically with {Binding Source={x:Reference SearchTerm}, Path=Text}
, we capture the input text from SearchTerm
and insert it as the query value.
Now, we have a search button that opens a search results page using the text input without writing a single line of code!
Most Commands support a simplified form for CommandParameter
. As seen in the OpenBrowser
example, a static URL can be passed directly if no custom parameters are needed. Each Command specifies the forms its CommandParameter
can accept.
Many Commands work within a block’s context (except for the Callback
Command, which only functions in Content-derived blocks). While most Commands are accessible outside a block, such as in a flyout menu, some require page-specific context, like ShowActionPanel
, which needs to know the page to overlay the panel.
Shorthand Syntax
Command parameter objects also support a shorthand form for XAML extensions, which simplifies the syntax. Here’s a comparison:
Using the shorthand, this becomes:
This condensed syntax is more succinct but doesn’t support arrays in parameters. When values contain commas, they should be enclosed in single quotes within the double-quoted property string.
Binding Context Considerations
Complex binding scenarios often arise with nested action items like ShowCoverSheet
, ShowActionPanel
, and ShowPopup
. These items may require additional BindingContext
references to maintain functionality at deeper nesting levels, as demonstrated below:
In this configuration, BindingContext
references ensure the Commands remain connected to the correct data context at each level.
Last updated