예제 #1
0
        public void CellEdited(ICellHandler cell, sw.FrameworkElement element)
        {
            var dataCell = element.GetParent <swc.DataGridCell>();
            var dataRow  = element.GetParent <swc.DataGridRow>();
            var row      = dataRow.GetIndex();
            var dataItem = element.DataContext;

            GridHandler.CellEdited(row, dataCell.Column, dataItem);
        }
        public static object FindNameRecursive(this FrameworkElement element, string name)
        {
            FrameworkElement rootVisual = element.GetRootVisual();

            if (rootVisual == null)
            {
                return(null);
            }

            return(rootVisual.FindName(name));

#if FALSE
            while (element != null)
            {
                object value = element.FindName(name);
                if (value != null)
                {
                    return(value);
                }

                element = element.GetParent();
            }

            return(null);
#endif
        }
예제 #3
0
        public static sw.Window GetParentWindow(this sw.FrameworkElement element)
        {
            var window = element.GetParent <sw.Window>();

            if (window == null)
            {
                var app = sw.Application.Current;
                window = app.MainWindow ?? (app.Windows.Count > 0 ? app.Windows[0] : new sw.Window());
            }
            return(window);
        }
예제 #4
0
 private static TooltipPopup GetOrCreateTooltipPopup (FrameworkElement control)
 {
     var window = control.GetParent<Window>();
     if (window == null)
         return null;
     TooltipPopup popup = GetTooltipPopup(window);
     if (popup == null) {
         popup = new TooltipPopup { Owner = window };
         SetTooltipPopup(window, popup);
         window.LocationChanged += UpdatePopup;
         window.SizeChanged += UpdatePopup;
     }
     return popup;
 }
예제 #5
0
            protected override void CancelCellEdit(sw.FrameworkElement editingElement, object uneditedValue)
            {
                var handler = Handler;
                var cell    = editingElement?.GetParent <swc.DataGridCell>();
                var args    = GetEditArgs(handler, cell, editingElement);

                if (handler != null && args != null)
                {
                    args.SetIsEditing(false);
                    cell.IsEditing = false;
                    handler.Callback.OnCancelEdit(handler.Widget, args);
                }
                if (args?.Handled != true && editingElement.IsKeyboardFocusWithin)
                {
                    editingElement.GetVisualParent <swc.DataGrid>()?.Focus();
                }
            }
예제 #6
0
            protected override object PrepareCellForEdit(sw.FrameworkElement editingElement, sw.RoutedEventArgs editingEventArgs)
            {
                var obj     = base.PrepareCellForEdit(editingElement, editingEventArgs);
                var handler = Handler;
                var cell    = editingElement?.GetParent <swc.DataGridCell>();
                var args    = GetEditArgs(handler, cell, editingElement);

                if (handler != null && args != null)
                {
                    args.SetIsEditing(true);
                    handler.Callback.OnBeginEdit(handler.Widget, args);
                }
                if (args?.Handled != true && !cell.IsKeyboardFocusWithin)
                {
                    // default implementation is to focus the cell's control
                    editingElement.Focus();
                    editingElement.MoveFocus(new swi.TraversalRequest(swi.FocusNavigationDirection.First));
                }
                return(obj);
            }
예제 #7
0
            protected override bool CommitCellEdit(sw.FrameworkElement editingElement)
            {
                var result  = base.CommitCellEdit(editingElement);
                var handler = Handler;
                var cell    = editingElement?.GetParent <swc.DataGridCell>();
                var args    = GetEditArgs(handler, cell, editingElement);

                if (handler != null && args != null)
                {
                    args.SetIsEditing(false);
                    cell.IsEditing = false;
                    handler.Callback.OnCommitEdit(handler.Widget, args);
                }
                if (args?.Handled != true && editingElement.IsKeyboardFocusWithin)
                {
                    // default implementation is to move focus back to the grid
                    var grid = editingElement.GetVisualParent <swc.DataGrid>();
                    grid?.Focus();
                }
                handler?.ContainerHandler.CellEdited(handler, editingElement);

                return(true);
            }