AdSense

Montag, 2. September 2013

C# WPF - Fortschrittsbalken in der Taskleiste anzeigen

(English version) Bei Downloads mit dem Firefox unter Windows 7 wird in der Taskleiste ein Fortschrittsbalken angezeigt. Das selber zu realisieren ist total einfach. In dem entsprechenden Fenster muss

<Window.TaskbarItemInfo>
    <TaskbarItemInfo/>
</Window.TaskbarItemInfo>


eingefügt werden, direkt vor dem standartmäßigen <Grid>. Damit kann man nun auf TaskbarItemInfo zugreifen. Das sieht dann z.B. folgendermaßen aus:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();


        TaskbarItemInfo.ProgressState = System.Windows.Shell.TaskbarItemProgressState.Normal;
 
        Loaded += MainWindow_Loaded;
    }

    void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        TaskbarItemInfo.ProgressValue = 0.5;

    }
}


Man kann nun auch verschiedene ProgressStates benutzen, dementsprechend verändert der Fortschrittsbalken seine Farbe. Ebenfalls kann man über TaskbarItemInfo auch ein Symbol in der Taskleiste festlegen.

Will man all dies jedoch aus einem anderen Thread tun, so wird es nicht funktionieren. Warum das so ist erkläre ich in diesem Post. Hier nur schnell die Lösung dafür. Statt

TaskbarItemInfo.ProgressValue = 0.2

benutzt man einfach

Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
    TaskbarItemInfo.ProgressValue = 0.2;
}));

Keine Kommentare:

Kommentar veröffentlichen