Skip to main content
All docs
V25.1
  • PopupDragCompletedEventArgs.Start Property

    Returns the Popup’s position before a drag-and-drop operation.

    Namespace: DevExpress.Blazor

    Assembly: DevExpress.Blazor.v25.1.dll

    NuGet Package: DevExpress.Blazor

    Declaration

    public Point Start { get; }

    Property Value

    Type Description
    Point

    The initial coordinates.

    Remarks

    The following code snippet handles DragStarted and DragCompleted events to save and load the current window position.

    <div class="target-container" @onclick="@(() => PopupVisible = true)">
        <p class="target-caption">CLICK TO SHOW A POP-UP WINDOW</p>
    </div>
    <DxPopup AllowDrag="true"
             HeaderText="Popup"
             @bind-Visible="@PopupVisible"
             BodyText="@Constants.Text"
             PositionX="positionX"
             PositionY="positionY"
             DragCompleted="OnPopupDragCompleted">
    </DxPopup>
    
    @code {
        bool PopupVisible { get; set; } = false;
        const string LocalStorageKey = "DialogsAndWindows-Popup-Dragging";
        int? positionX, positionY;
    
        protected override async Task OnAfterRenderAsync(bool firstRender) {
            if (firstRender) {
                var position = await LoadPositionFromLocalStorageAsync();
                (positionX, positionY) = (position?.X ?? null, position?.Y ?? null);
                StateHasChanged();
            }
        }
        async Task OnPopupDragCompleted(PopupDragCompletedEventArgs args) {
            (positionX, positionY) = (args.End.X, args.End.Y);
            await SavePositionToLocalStorageAsync(args.End);
        }
        async Task<Point?> LoadPositionFromLocalStorageAsync() {
            var json = await JSRuntime.InvokeAsync<string>("localStorage.getItem", LocalStorageKey);
            return string.IsNullOrEmpty(json) ? null : JsonSerializer.Deserialize<Point>(json);
        }
        async Task SavePositionToLocalStorageAsync(Point position) {
            await JSRuntime.InvokeVoidAsync("localStorage.setItem", LocalStorageKey, JsonSerializer.Serialize(position));
        }
    }
    
    See Also