TaskbarItemInfo Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa información sobre cómo se muestra la miniatura de la barra de tareas.
public ref class TaskbarItemInfo sealed : System::Windows::Freezable
public sealed class TaskbarItemInfo : System.Windows.Freezable
type TaskbarItemInfo = class
inherit Freezable
Public NotInheritable Class TaskbarItemInfo
Inherits Freezable
- Herencia
Ejemplos
En el ejemplo siguiente se muestra cómo crear un TaskbarItemInfo elemento en el marcado. TaskbarItemInfo contiene una colección de ThumbButtonInfo objetos que proporcionan acceso a los comandos Play y Stop del elemento de la barra de tareas.
<Window.TaskbarItemInfo>
<TaskbarItemInfo x:Name="taskBarItemInfo1"
Overlay="{StaticResource ResourceKey=StopImage}"
ThumbnailClipMargin="80,0,80,140"
Description="Taskbar Item Info Sample">
<TaskbarItemInfo.ThumbButtonInfos>
<ThumbButtonInfoCollection>
<ThumbButtonInfo
DismissWhenClicked="False"
Command="MediaCommands.Play"
CommandTarget="{Binding ElementName=btnPlay}"
Description="Play"
ImageSource="{StaticResource ResourceKey=PlayImage}"/>
<ThumbButtonInfo
DismissWhenClicked="True"
Command="MediaCommands.Stop"
CommandTarget="{Binding ElementName=btnStop}"
Description="Stop"
ImageSource="{StaticResource ResourceKey=StopImage}"/>
</ThumbButtonInfoCollection>
</TaskbarItemInfo.ThumbButtonInfos>
</TaskbarItemInfo>
</Window.TaskbarItemInfo>
En el siguiente marcado y código se muestra el ejemplo anterior en su contexto completo. La aplicación usa para BackgroundWorker contar de 0 a 100 y muestra su progreso en la interfaz de usuario. La tarea se puede iniciar y detener desde la vista previa de la barra de tareas. El progreso se muestra en el botón de la barra de tareas.
<Window x:Class="Shell_TaskbarItemSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="300" Width="300">
<Window.Resources>
<DrawingImage x:Key="PlayImage">
<DrawingImage.Drawing>
<DrawingGroup>
<DrawingGroup.Children>
<GeometryDrawing Brush="Green" Geometry="F1 M 50,25L 0,0L 0,50L 50,25 Z "/>
</DrawingGroup.Children>
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
<DrawingImage x:Key="StopImage">
<DrawingImage.Drawing>
<DrawingGroup>
<DrawingGroup.Children>
<GeometryDrawing Brush="Gray" Geometry="F1 M 0,0L 50,0L 50,50L 0,50L 0,0 Z "/>
</DrawingGroup.Children>
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Window.Resources>
<Window.CommandBindings>
<CommandBinding Command="MediaCommands.Play"
Executed="StartCommand_Executed"
CanExecute="StartCommand_CanExecute"/>
<CommandBinding Command="MediaCommands.Stop"
Executed="StopCommand_Executed"
CanExecute="StopCommand_CanExecute"/>
</Window.CommandBindings>
<Window.TaskbarItemInfo>
<TaskbarItemInfo x:Name="taskBarItemInfo1"
Overlay="{StaticResource ResourceKey=StopImage}"
ThumbnailClipMargin="80,0,80,140"
Description="Taskbar Item Info Sample">
<TaskbarItemInfo.ThumbButtonInfos>
<ThumbButtonInfoCollection>
<ThumbButtonInfo
DismissWhenClicked="False"
Command="MediaCommands.Play"
CommandTarget="{Binding ElementName=btnPlay}"
Description="Play"
ImageSource="{StaticResource ResourceKey=PlayImage}"/>
<ThumbButtonInfo
DismissWhenClicked="True"
Command="MediaCommands.Stop"
CommandTarget="{Binding ElementName=btnStop}"
Description="Stop"
ImageSource="{StaticResource ResourceKey=StopImage}"/>
</ThumbButtonInfoCollection>
</TaskbarItemInfo.ThumbButtonInfos>
</TaskbarItemInfo>
</Window.TaskbarItemInfo>
<Grid>
<StackPanel>
<TextBlock x:Name="tbCount" FontSize="72" HorizontalAlignment="Center"/>
<StackPanel Orientation="Horizontal">
<Button x:Name="btnPlay" Content="Play" Command="MediaCommands.Play" />
<Button x:Name="btnStop" Content="Stop" Command="MediaCommands.Stop" />
</StackPanel>
</StackPanel>
</Grid>
</Window>
// MainWindow.xaml.cs
using System.ComponentModel;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Shell;
namespace Shell_TaskbarItemSample
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private BackgroundWorker _backgroundWorker = new BackgroundWorker();
public MainWindow()
{
InitializeComponent();
// Set up the BackgroundWorker.
this._backgroundWorker.WorkerReportsProgress = true;
this._backgroundWorker.WorkerSupportsCancellation = true;
this._backgroundWorker.DoWork += new DoWorkEventHandler(bw_DoWork);
this._backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
this._backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
}
private void StartCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
e.Handled = true;
}
private void StartCommand_Executed(object sender, ExecutedRoutedEventArgs e)
{
if (!this._backgroundWorker.IsBusy)
{
this._backgroundWorker.RunWorkerAsync();
// When the task is started, change the ProgressState and Overlay
// of the taskbar item to indicate an active task.
this.taskBarItemInfo1.ProgressState = TaskbarItemProgressState.Normal;
this.taskBarItemInfo1.Overlay = (DrawingImage)this.FindResource("PlayImage");
}
e.Handled = true;
}
private void StopCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = this._backgroundWorker.WorkerSupportsCancellation;
e.Handled = true;
}
private void StopCommand_Executed(object sender, ExecutedRoutedEventArgs e)
{
this._backgroundWorker.CancelAsync();
e.Handled = true;
}
void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// When the task ends, change the ProgressState and Overlay
// of the taskbar item to indicate a stopped task.
if (e.Cancelled)
{
// The task was stopped by the user. Show the progress indicator
// in the paused state.
this.taskBarItemInfo1.ProgressState = TaskbarItemProgressState.Paused;
}
else if (e.Error != null)
{
// The task ended with an error. Show the progress indicator
// in the error state.
this.taskBarItemInfo1.ProgressState = TaskbarItemProgressState.Error;
}
else
{
// The task completed normally. Remove the progress indicator.
this.taskBarItemInfo1.ProgressState = TaskbarItemProgressState.None;
}
// In all cases, show the 'Stopped' overlay.
this.taskBarItemInfo1.Overlay = (DrawingImage)this.FindResource("StopImage");
}
void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.tbCount.Text = e.ProgressPercentage.ToString();
// Update the value of the task bar progress indicator.
this.taskBarItemInfo1.ProgressValue = (double)e.ProgressPercentage / 100;
}
void bw_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker _worker = sender as BackgroundWorker;
if (_worker != null)
{
for (int i = 1; i <= 100; i++)
{
if (_worker.CancellationPending)
{
e.Cancel = true;
break;
}
else
{
System.Threading.Thread.Sleep(25);
_worker.ReportProgress(i);
}
}
}
}
}
}
' MainWindow.xaml.vb
Imports System.ComponentModel
Imports System.Windows.Shell
Class MainWindow
Private _backgroundWorker As New BackgroundWorker
Public Sub New()
InitializeComponent()
' Set up the BackgroundWorker
Me._backgroundWorker.WorkerReportsProgress = True
Me._backgroundWorker.WorkerSupportsCancellation = True
AddHandler Me._backgroundWorker.DoWork, AddressOf bw_DoWork
AddHandler Me._backgroundWorker.ProgressChanged, AddressOf bw_ProgressChanged
AddHandler Me._backgroundWorker.RunWorkerCompleted, AddressOf bw_RunWorkerCompleted
End Sub
Private Sub StartCommand_CanExecute(ByVal sender As System.Object, ByVal e As System.Windows.Input.CanExecuteRoutedEventArgs)
e.CanExecute = True
e.Handled = True
End Sub
Private Sub StartCommand_Executed(ByVal sender As System.Object, ByVal e As System.Windows.Input.ExecutedRoutedEventArgs)
If Me._backgroundWorker.IsBusy = False Then
Me._backgroundWorker.RunWorkerAsync()
' When the task is started, change the ProgressState and Overlay
' of the taskbar item to indicate an active task.
Me.taskBarItemInfo1.ProgressState = Shell.TaskbarItemProgressState.Normal
Me.taskBarItemInfo1.Overlay = Me.FindResource("PlayImage")
End If
e.Handled = True
End Sub
Private Sub StopCommand_CanExecute(ByVal sender As System.Object, ByVal e As System.Windows.Input.CanExecuteRoutedEventArgs)
e.CanExecute = Me._backgroundWorker.WorkerSupportsCancellation
e.Handled = True
End Sub
Private Sub StopCommand_Executed(ByVal sender As System.Object, ByVal e As System.Windows.Input.ExecutedRoutedEventArgs)
Me._backgroundWorker.CancelAsync()
e.Handled = True
End Sub
Private Sub bw_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs)
' When the task ends, change the ProgressState and Overlay
' of the taskbar item to indicate a stopped task.
If e.Cancelled = True Then
' The task was stopped by the user. Show the progress indicator
' in the paused state.
Me.taskBarItemInfo1.ProgressState = TaskbarItemProgressState.Paused
ElseIf e.Error IsNot Nothing Then
' The task ended with an error. Show the progress indicator
' in the error state.
Me.taskBarItemInfo1.ProgressState = TaskbarItemProgressState.Error
Else
' The task completed normally. Remove the progress indicator.
Me.taskBarItemInfo1.ProgressState = TaskbarItemProgressState.None
' In all cases, show the 'Stopped' overlay.
Me.taskBarItemInfo1.Overlay = Me.FindResource("StopImage")
End If
End Sub
Private Sub bw_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs)
Me.tbCount.Text = e.ProgressPercentage.ToString()
' Update the value of the task bar progress indicator.
Me.taskBarItemInfo1.ProgressValue = e.ProgressPercentage / 100
End Sub
Private Sub bw_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs)
Dim _worker As BackgroundWorker = CType(sender, BackgroundWorker)
If _worker IsNot Nothing Then
For i As Integer = 1 To 100 Step 1
If _worker.CancellationPending = True Then
e.Cancel = True
Return
Else
System.Threading.Thread.Sleep(25)
_worker.ReportProgress(i)
End If
Next
End If
End Sub
End Class
Comentarios
La TaskbarItemInfo clase proporciona un contenedor administrado para la funcionalidad de la barra de tareas de Windows 7. Para obtener más información sobre el shell de Windows y las API nativas de la barra de tareas, consulte Extensiones de barra de tareas. TaskbarItemInfose expone como la Window.TaskbarItemInfo propiedad de dependencia en .Window
La barra de tareas de Windows 7 proporciona una funcionalidad mejorada que permite usar el elemento de la barra de tareas para comunicar el estado a un usuario y exponer tareas comunes cuando la ventana está minimizada o oculta. La funcionalidad expuesta por la TaskbarItemInfo clase no está disponible en versiones de Windows anteriores a Windows 7. Las aplicaciones que usan la TaskbarItemInfo clase todavía se pueden ejecutar en versiones anteriores de Windows; sin embargo, estas mejoras de la barra de tareas no están disponibles en las versiones anteriores.
En Windows 7, es posible que algunas funciones de la barra de tareas no estén disponibles, en función de la configuración del usuario. Por ejemplo, la funcionalidad de la barra de tareas no está disponible si Windows Aero está deshabilitado o si la aplicación se inicia con permisos elevados. La aplicación debe proporcionar otras formas de interactuar con el usuario que no dependen de la funcionalidad mejorada de la barra de tareas en Windows 7.
Los iconos de programa del área de notificación, que se encuentra en el extremo derecho de la barra de tareas, se suelen usar para comunicar el estado de la aplicación a un usuario. De forma predeterminada, la barra de tareas de Windows 7 oculta los iconos de programa en el área de notificación. Sin embargo, puede establecer la Overlay propiedad para agregar una imagen al botón de la barra de tareas para comunicar el estado, como el estado en línea en una aplicación de mensajería. La imagen de superposición permite a los usuarios ver el estado de la aplicación incluso si no pueden ver el icono del programa en el área de notificación. También puede mostrar el progreso de las tareas en ejecución en el botón de la barra de tareas estableciendo las ProgressState propiedades y ProgressValue .
La barra de tareas de Windows 7 muestra una miniatura de la aplicación al mover el puntero del mouse sobre el botón de la barra de tareas. De forma predeterminada, se muestra toda la ventana de la aplicación. Puede especificar una parte determinada de la ventana que se va a mostrar en la miniatura estableciendo la ThumbnailClipMargin propiedad . También puede especificar un Description que se muestra en una información sobre herramientas encima de la miniatura de la barra de tareas. La información sobre herramientas se muestra incluso cuando no se puede ver la miniatura debido a la configuración del usuario.
Puede agregar botones a la miniatura de la barra de tareas para proporcionar acceso a tareas comunes sin cambiar a la ventana de la aplicación. Por ejemplo, El Reproductor de Windows Media proporciona botones Reproducir, Pausar, Reenviar y Atrás que permiten controlar la reproducción multimedia desde la miniatura de la barra de tareas cuando se minimiza la aplicación. Los botones de la miniatura de la barra de tareas se representan mediante ThumbButtonInfo objetos y se encuentran en la ThumbButtonInfos colección.
En la ilustración siguiente se muestran las características mejoradas de la barra de tareas de Windows 7.
de Características mejoradas de la barra de tareas de Windows
Constructores
| Nombre | Description |
|---|---|
| TaskbarItemInfo() |
Inicializa una nueva instancia de la clase TaskbarItemInfo. |
Campos
| Nombre | Description |
|---|---|
| DescriptionProperty |
Identifica la Description propiedad de dependencia. |
| OverlayProperty |
Identifica la Overlay propiedad de dependencia. |
| ProgressStateProperty |
Identifica la ProgressState propiedad de dependencia. |
| ProgressValueProperty |
Identifica la ProgressValue propiedad de dependencia. |
| ThumbButtonInfosProperty |
Identifica la ThumbButtonInfos propiedad de dependencia. |
| ThumbnailClipMarginProperty |
Identifica la ThumbnailClipMargin propiedad de dependencia. |
Propiedades
| Nombre | Description |
|---|---|
| CanFreeze |
Obtiene un valor que indica si el objeto se puede hacer no modificable. (Heredado de Freezable) |
| DependencyObjectType |
Obtiene el DependencyObjectType objeto que encapsula el tipo CLR de esta instancia. (Heredado de DependencyObject) |
| Description |
Obtiene o establece el texto de la información sobre herramientas del elemento de la barra de tareas. |
| Dispatcher |
Obtiene el objeto al que DispatcherDispatcherObject está asociado. (Heredado de DispatcherObject) |
| IsFrozen |
Obtiene un valor que indica si el objeto se puede modificar actualmente. (Heredado de Freezable) |
| IsSealed |
Obtiene un valor que indica si esta instancia está actualmente sellada (solo lectura). (Heredado de DependencyObject) |
| Overlay |
Obtiene o establece la imagen que se muestra sobre el icono de programa en el botón de la barra de tareas. |
| ProgressState |
Obtiene o establece un valor que indica cómo se muestra el indicador de progreso en el botón de la barra de tareas. |
| ProgressValue |
Obtiene o establece un valor que indica la totalidad del indicador de progreso en el botón de la barra de tareas. |
| ThumbButtonInfos |
Obtiene o establece la colección de ThumbButtonInfo objetos asociados a .Window |
| ThumbnailClipMargin |
Obtiene o establece un valor que especifica la parte del área cliente de la ventana de la aplicación que se muestra en la miniatura de la barra de tareas. |
Métodos
| Nombre | Description |
|---|---|
| CheckAccess() |
Determina si el subproceso que llama tiene acceso a este DispatcherObject. (Heredado de DispatcherObject) |
| ClearValue(DependencyProperty) |
Borra el valor local de una propiedad. Un identificador especifica DependencyProperty la propiedad que se va a borrar. (Heredado de DependencyObject) |
| ClearValue(DependencyPropertyKey) |
Borra el valor local de una propiedad de solo lectura. La propiedad que se va a borrar se especifica mediante .DependencyPropertyKey (Heredado de DependencyObject) |
| Clone() |
Crea un clon modificable de Freezable, haciendo copias profundas de los valores del objeto. Al copiar las propiedades de dependencia del objeto, este método copia expresiones (que podrían dejar de resolverse), pero no animaciones ni sus valores actuales. (Heredado de Freezable) |
| CloneCore(Freezable) |
Convierte la instancia en un clon (copia profunda) del especificado Freezable mediante valores de propiedad base (no animados). (Heredado de Freezable) |
| CloneCurrentValue() |
Crea un clon modificable (copia profunda) del Freezable utilizando sus valores actuales. (Heredado de Freezable) |
| CloneCurrentValueCore(Freezable) |
Convierte la instancia en un clon modificable (copia profunda) del especificado Freezable mediante los valores de propiedad actuales. (Heredado de Freezable) |
| CoerceValue(DependencyProperty) |
Coerce el valor de la propiedad de dependencia especificada. Esto se logra invocando cualquier CoerceValueCallback función especificada en metadatos de propiedad para la propiedad de dependencia tal como existe en la llamada DependencyObjecta . (Heredado de DependencyObject) |
| CreateInstance() |
Inicializa una nueva instancia de la clase Freezable. (Heredado de Freezable) |
| CreateInstanceCore() |
Cuando se implementa en una clase derivada, crea una nueva instancia de la Freezable clase derivada. (Heredado de Freezable) |
| Equals(Object) |
Determina si un proporcionado DependencyObject es equivalente al objeto actual DependencyObject. (Heredado de DependencyObject) |
| Freeze() |
Hace que el objeto actual no se pueda modificar y establezca su IsFrozen propiedad |
| FreezeCore(Boolean) |
Hace que el Freezable objeto no se pueda modificar o compruebe si se puede hacer no modificable. (Heredado de Freezable) |
| GetAsFrozen() |
Crea una copia inmovilizada de , Freezablemediante valores de propiedad base (no animados). Dado que la copia está inmovilizada, los sub-objetos congelados se copian por referencia. (Heredado de Freezable) |
| GetAsFrozenCore(Freezable) |
Convierte la instancia en un clon inmovilizado del especificado Freezable mediante valores de propiedad base (no animados). (Heredado de Freezable) |
| GetCurrentValueAsFrozen() |
Crea una copia inmovilizada de mediante los valores de Freezable propiedad actuales. Dado que la copia está inmovilizada, los sub-objetos congelados se copian por referencia. (Heredado de Freezable) |
| GetCurrentValueAsFrozenCore(Freezable) |
Convierte la instancia actual en un clon inmovilizado del especificado Freezable. Si el objeto tiene propiedades de dependencia animadas, se copian sus valores animados actuales. (Heredado de Freezable) |
| GetHashCode() |
Obtiene un código hash para este DependencyObjectobjeto . (Heredado de DependencyObject) |
| GetLocalValueEnumerator() |
Crea un enumerador especializado para determinar qué propiedades de dependencia tienen valores establecidos localmente en este DependencyObject. (Heredado de DependencyObject) |
| GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
| GetValue(DependencyProperty) |
Devuelve el valor efectivo actual de una propiedad de dependencia en esta instancia de .DependencyObject (Heredado de DependencyObject) |
| InvalidateProperty(DependencyProperty) |
Vuelve a evaluar el valor efectivo de la propiedad de dependencia especificada. (Heredado de DependencyObject) |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
| OnChanged() |
Se llama cuando se modifica el objeto actual Freezable . (Heredado de Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
Este miembro admite la infraestructura de Windows Presentation Foundation (WPF) y no está pensada para usarse directamente desde el código. (Heredado de Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Garantiza que los punteros de contexto adecuados se establecen para un DependencyObjectType miembro de datos que se acaba de establecer. (Heredado de Freezable) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Invalida la DependencyObject implementación de OnPropertyChanged(DependencyPropertyChangedEventArgs) para invocar también los Changed controladores en respuesta a una propiedad de dependencia cambiante de tipo Freezable. (Heredado de Freezable) |
| ReadLocalValue(DependencyProperty) |
Devuelve el valor local de una propiedad de dependencia, si existe. (Heredado de DependencyObject) |
| ReadPreamble() |
Garantiza que Freezable se accede a desde un subproceso válido. Los heredadores de Freezable deben llamar a este método al principio de cualquier API que lea miembros de datos que no sean propiedades de dependencia. (Heredado de Freezable) |
| SetCurrentValue(DependencyProperty, Object) |
Establece el valor de una propiedad de dependencia sin cambiar su origen de valor. (Heredado de DependencyObject) |
| SetValue(DependencyProperty, Object) |
Establece el valor local de una propiedad de dependencia, especificado por su identificador de propiedad de dependencia. (Heredado de DependencyObject) |
| SetValue(DependencyPropertyKey, Object) |
Establece el valor local de una propiedad de dependencia de solo lectura, especificada por el DependencyPropertyKey identificador de la propiedad de dependencia. (Heredado de DependencyObject) |
| ShouldSerializeProperty(DependencyProperty) |
Devuelve un valor que indica si los procesos de serialización deben serializar el valor de la propiedad de dependencia proporcionada. (Heredado de DependencyObject) |
| ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
| VerifyAccess() |
Exige que el subproceso de llamada tenga acceso a este DispatcherObject. (Heredado de DispatcherObject) |
| WritePostscript() |
Genera el Changed evento para e Freezable invoca su OnChanged() método . Las clases que derivan de Freezable deben llamar a este método al final de cualquier API que modifique los miembros de clase que no se almacenan como propiedades de dependencia. (Heredado de Freezable) |
| WritePreamble() |
Comprueba que Freezable no está inmovilizado y que se accede a él desde un contexto de subproceso válido. Freezable Los heredares deben llamar a este método al principio de cualquier API que escriba en miembros de datos que no sean propiedades de dependencia. (Heredado de Freezable) |
Eventos
| Nombre | Description |
|---|---|
| Changed |
Se produce cuando se modifica o Freezable un objeto que contiene. (Heredado de Freezable) |