Прозрачная двойная панель в wpf - PullRequest
1 голос
/ 23 марта 2019

Я кодирую MediaPlayer с помощью плагина VLC и хочу сделать vlc (WindowsFormsintegration) двойным щелчком (для полноэкранного режима). Но нет события двойного щелчка. Итак, я подумал о прозрачной панели с кликабельностью, которая перекрывает VLC (WFI). Кто-нибудь может мне помочь? Я использую WPF в Windows и переключил форму Winforms на WPF из-за отсутствия прозрачности.

1 Ответ

2 голосов
/ 24 марта 2019

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

<Grid Background="#006000">
    <Button Content="clicky" Click="clicky"
            HorizontalAlignment="Left" Margin="30"/>
    <Border Background="#00FFFFFF" >
        <Border.InputBindings>
            <MouseBinding MouseAction="LeftDoubleClick "
                Command="{Binding CommandDoubleClick}"/>
        </Border.InputBindings>
    </Border>
</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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...