2012-04-29 1 views
0

Я хочу создать приложение WPF, которое при запуске имеет только иконку в трее. Если пользователь взаимодействует с записями меню из контекстного меню лотка, появится Windows.MainWindow загружен, но не отображается в любое время

Мне нужно загрузить MainWindow, так что я могу прослушивать события с буфером обмена. Но я не хочу это показывать.

Я пробовал:

<Window x:Class="ClipboardListener.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:tb="http://www.hardcodet.net/taskbar" 
    Title="Should not see me" 
    ShowInTaskbar="False" Visibility="Collapsed" Opacity="100" 
    Width="320" Height="240"> 

Но это все еще показывает вверх? Настройка Visibility to Hidden не работает для меня, так как мне нужно какое-то окно, чтобы зарегистрировать прослушиватель событий буфера обмена с помощью WinAPI.

Любые идеи?

ответ

2

У меня недавно была очень похожая задача. Все мои попытки сделать окно невидимым, мой поиск в googling, мой stackoverflowing и т. Д. Потерпели неудачу. Наконец, я почувствовал, что невидимое окно - это то, что не должно быть в WPF по какой-то причине. Это была бы легкая задача, если бы был контроль TrayIcon, как в WinForms. К сожалению, WPF не имеет TrayIcon. Это приводит к тому, что присутствует в WinForms.

Here's a good article по вопросу. И мой код, который использует эту библиотеку DLL:

<Window x:Class="ScannerClientWpf.TrayIcon" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:ni="clr-namespace:Hardcodet.Wpf.TaskbarNotification;assembly=Hardcodet.Wpf.TaskbarNotification" 
    Title="TrayIcon" WindowStyle="None" AllowsTransparency="True" Background="Transparent" ShowActivated="False" ShowInTaskbar="False" > 
<Grid> 
    <ni:TaskbarIcon IconSource="/ScannerClient;component/app.ico" 
        ToolTipText="ScannerClient"> 
     <ni:TaskbarIcon.ContextMenu> 
      <ContextMenu> 
       <MenuItem Header="Close" Click="MenuItem_Click"/> 
      </ContextMenu> 
     </ni:TaskbarIcon.ContextMenu> 
    </ni:TaskbarIcon> 
</Grid> 

+0

Я использую эту реализацию для TrayIcon уже, я просто имел проблемы, делающие окно исчезнет. Это сделал трюк. Благодаря! – metacircle