Opción Primera Mediante código XAML
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="SDKSample.MainWindow" Icon="WPFIcon1.ico"> </Window>
Opción segunda, Mediante código
El icono es un fichero que guardamos en la misma carpeta que el ejecutable
Ejemplo sencillo de msdn
Dim iconUri As New Uri("pack://application:,,,/WPFIcon2.ico", UriKind.RelativeOrAbsolute) Me.Icon = BitmapFrame.Create(iconUri)
Ejemplo un poco mas complicado
'------------------------------------- ' El nombre del icono esta en la misma carpeta que el ensamblado ejecutable 'https://learn.microsoft.com/es-es/dotnet/api/system.windows.window.icon?view = windowsdesktop-7.0 '------------------------------------- 'Paso A) Obtener el nombre del ensamblado' esto obtiene la DLL o el EXE seg�n Dim LocalNombreCompletoDelEnsamblado As String = System.Reflection.Assembly.GetExecutingAssembly().Location ' Solo necesito la ruta Dim LocalRutaDelEnsamblado As String = System.IO.Path.GetDirectoryName(LocalNombreCompletoDelEnsamblado) '------------------------------------- 'Paso B) Nombre completo del ejecutable (El fichero exe) ' (ruta + nombre + extensión) Dim NombreCompletoDelIcono As String = System.IO.Path.Combine(LocalRutaDelEnsamblado, "Stopwatch.ico") '------------------------------------- 'Paso c) Con el nombre de fichero generar un objeto URI ' y crear el icono y asignarlo a la propiedad If System.IO.File.Exists(NombreCompletoDelIcono) = True Then Dim iconUri As New Uri(NombreCompletoDelIcono) Me.Icon = BitmapFrame.Create(iconUri) End If
El icono esta incluido como un recurso
'------------------------------------- ' El nombre del icono esta en recursos ' https://stackoverflow.com/questions/43179090/change-taskbar-icon-at-runtime-on-deployed-app/43179733#43179733 ' Dim ms_icon As BitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon( My.Resources.Stopwatch.Handle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()) Me.Icon = ms_icon