движущиеся строки от одного окна до другого

Достаточно просто поместить прозрачный элемент поверх другого в WPF. В приведенном ниже примере WPF показана прозрачная рамка, перекрывающая кнопку в элементе управления Grid.


    

enter image description here

Элемент Border имеет привязанную команду двойного щелчка.

Проблема с этим заключается в том, что прозрачное Border наложение Button предотвращает нажатие Button. Вы не можете щелкнуть по элементу Border, чтобы перейти к элементам под ним. Если вам не нужен доступ к чему-либо под прозрачным элементом, то это должно работать для вас. Если вам нужен доступ к элементам под прозрачным элементом, то это не сработает вообще.

Ниже показан код RelayCommand и связанный метод, связанный с событием двойного щелчка на границе:

    private bool CanDoubleClick = true;
    RelayCommand commandDoubleClick;
    public ICommand CommandDoubleClick
    {
        get
        {
            if (commandDoubleClick == null)
            {
                commandDoubleClick = new RelayCommand(param => DoubleClickMethod(),
                param => CanDoubleClick);
            }
            return commandDoubleClick;
        }
    }

    private void DoubleClickMethod()
    {
        MessageBox.Show("Double-Clicked the Border");
    }

Этот код помещается в ViewModel, которая используется для DataContext окна содержащий прозрачную границу. Вы захотите немного изучить шаблон проектирования MVVM, команды ретрансляции и привязку.

К сожалению, нет события двойного щелчка, напрямую доступного на Border или другом элементе панели, который вы можете использовать, поэтому необходимы более сложные InputBindings.

7
задан Bongali Babu 27 March 2009 в 05:01
поделиться

4 ответа

Я сделал бы этот вид вещи с макросом. Таким образом записывать макрос для a, обеспечения качества. Затем yy для дергания строки: bnext к буферам коммутатора, p для вставки строки, затем bnext снова для переключения назад на исходный буфер (на строке Вы запустили на). Затем хит q, чтобы прекратить записывать.

Таким образом для копирования переключите окна, вставьте затем переключатель назад, просто необходимо использовать @a. Или отобразитесь, это к функциональной клавише (отобразите @a).

N.B. Просто замеченный в комментариях у Вас было несколько буферов, так очевидно, необходимо будет записать макрос соответственно.

8
ответ дан 6 December 2019 в 23:13
поделиться

Вы могли попробовать это отображение:

nmap <C-y> Y<C-w>wp<C-w>w
2
ответ дан 6 December 2019 в 23:13
поделиться

использование vimdiff Вы может использовать diffput или diffget для копирования изменений между буферами. Из руководства:

There are two commands to copy text from one buffer to another.  The result is
that the buffers will be equal within the specified range.


                        *:diffg* *:diffget*
:[range]diffg[et] [bufspec]
    Modify the current buffer to undo difference with another
    buffer.  If [bufspec] is given, that buffer is used.
    Otherwise this only works if there is one other buffer in diff
    mode.
    See below for [range].


                        *:diffpu* *:diffput*
:[range]diffpu[t] [bufspec]
    Modify another buffer to undo difference with the current
    buffer.  Just like ":diffget" but the other buffer is modified
    instead of the current one.
    See below for [range].
1
ответ дан 6 December 2019 в 23:13
поделиться

Я сомневаюсь, возможно ли это. Но вот является интересное сообщение приблизительно 100 командами Vim, которые должен знать каждый программист, интересно ли Вам.

0
ответ дан 6 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: