# AppendAction

> Adds an item that executes an action in the dropdown menu.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.UIElements](/engine/6000.7/script-reference/unityengine/uielements.md)
* **Assembly:** UnityEngine.UIElementsModule

## AppendAction(string, Action\<DropdownMenuAction>, Func\<DropdownMenuAction, Status>, Object)

Adds an item that executes an action in the dropdown menu.

```csharp
public void AppendAction(string actionName, Action<DropdownMenuAction> action, Func<DropdownMenuAction, DropdownMenuAction.Status> actionStatusCallback, object userData = null)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name of the item. This name is displayed in the dropdown menu.**** (\[Action\<DropdownMenuAction>]\(https\://learn.microsoft.com/dotnet/api/system.action)): The callback to execute when the user selects this item in the menu.**** (\[Func\<DropdownMenuAction, Status>]\(https\://learn.microsoft.com/dotnet/api/system.func-1)): The callback to execute to determine the status of this item.**** (\[Object]\(https\://learn.microsoft.com/dotnet/api/system.object)): The object to store in the `userData` property of the [DropdownMenuAction](/engine/6000.7/script-reference/unityengine/uielements/dropdownmenuaction.md) item.

### Remarks

The item is added to the end of the current item list.

### Examples

```csharp
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;

public class ContextMenuWindow : EditorWindow
{
    [MenuItem("My/Context Menu Window")]
    static void ShowMe() => GetWindow<ContextMenuWindow>();

    void CreateGUI()
    {
        var contextMenuContainer = new VisualElement();
        contextMenuContainer.style.flexGrow = 1;
        contextMenuContainer.AddManipulator(new ContextualMenuManipulator(e =>
        {
            e.menu.AppendAction("Submenu/My Action 1", a => Debug.Log("My Action 1 Works"), action =>
            {
                action.tooltip = "Status dependent tooltip";
                return DropdownMenuAction.Status.Normal;
            }, null);
        }));

        rootVisualElement.Add(contextMenuContainer);
    }
}
```

## AppendAction(string, Action\<DropdownMenuAction>, Status)

Adds an item that executes an action in the dropdown menu.

```csharp
public void AppendAction(string actionName, Action<DropdownMenuAction> action, DropdownMenuAction.Status status = Status.Normal)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name of the item. This name is displayed in the dropdown menu.**** (\[Action\<DropdownMenuAction>]\(https\://learn.microsoft.com/dotnet/api/system.action)): The callback to execute when the user selects this item in the menu.**** (\[Status]\(/engine/6000.7/script-reference/unityengine/uielements/dropdownmenuaction/status)): The status of the item.

### Remarks

The item is added to the end of the current item list.

### Examples

```csharp
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;

public class ContextMenuWindow : EditorWindow
{
    [MenuItem("My/Context Menu Window")]
    static void ShowMe() => GetWindow<ContextMenuWindow>();

    void CreateGUI()
    {
        var contextMenuContainer = new VisualElement();
        contextMenuContainer.style.flexGrow = 1;
        contextMenuContainer.AddManipulator(new ContextualMenuManipulator(e =>
        {
            e.menu.AppendAction("My Action 1", a => Debug.Log("My Action 1 Works"), DropdownMenuAction.Status.Normal);
        }));

        rootVisualElement.Add(contextMenuContainer);
    }
}
```
