Benutzer mit den meisten Antworten
VB.Net den SmallImageSource von WPF ändern

Frage
-
Hallo
Wie kann man das SmallImageSource in Code ändern?
Code im WPF
<RibbonButton x:Name="Ribbon_Button1" Content="Test Button" SmallImageSource="Images/Bild1.png"/>
in im VB.Net
Ribbon_Button1.SmallImageSource = "Bild2.png"
Leider funktioniert das so nicht. Wie kann man diese Lösen?
Antworten
-
ich hab es kürzer raus gefunden.
mir hat nur das pack://application:,,,/ gefehlt
so funktioniert es super
Ribbon_Button1.SmallImageSource = New BitmapImage(New Uri("pack://application:,,,/Bild2.png"))
Danke für die Hilfe
- Als Antwort markiert Mattes80 Mittwoch, 1. April 2020 20:49
Alle Antworten
-
Hi,
wie wäre es damit?Ribbon_Button1.SmallImageSource = New BitmapImage(New Uri("Bild2.png"))
--
Best Regards / Viele Grüße
Peter Fleischer (former MVP for Developer Technologies)
Homepage, Tipps, Tricks -
Hallo
Danke für deine Antwort
Das Problem ist das die Bilder die in Projektmappen-Explorer drin sind nicht in Bin/Debug sind und somit kann er das Bild nicht finden.
Das finde ich auch gut so das die Bilder auch nicht angezeigt wird.
Aber wie kann man auf die Bilder dann zugreifen?
-
Hi,
nachfolgend eine Demo in VB.NET und MVVM. Einfach alles in ein leeres Projekt kopieren und dann mit Button-Klick Bild aus Dateisystem auswählen.XAML:
<Window x:Class="MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApp1" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Window.DataContext> <local:ViewModel/> </Window.DataContext> <StackPanel> <RibbonButton Content="Test Button" SmallImageSource="{Binding Bild}"/> <Button Content="Bild laden" Command="{Binding Cmd}"/> </StackPanel> </Window>
Und die genutzten Klassen:
Imports System.ComponentModel Imports System.Runtime.CompilerServices Imports Microsoft.Win32 Public Class ViewModel Implements INotifyPropertyChanged Public Property Bild As ImageSource Public Property Cmd As ICommand = New RelayCommand(Sub(state) Dim ofd As New OpenFileDialog If ofd.ShowDialog Then Try Bild = New BitmapImage(New Uri(ofd.FileName)) OnPropChanged(NameOf(Bild)) Catch ex As Exception MsgBox(ex.Message) End Try End If End Sub) #Region " PropertyChanged" Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged Friend Sub OnPropChanged(<CallerMemberName> Optional propName As String = "") RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName)) End Sub #End Region End Class ''' <summary> ''' Eine das ICommand-Interface implementierende Klasse, deren Ziel es ist, ''' über Delegates die Funktionalität an andere Objekte zu übertragen. ''' CanExecute ist standardmäßig "True". ''' </summary> Public Class RelayCommand Implements ICommand #Region "Fields" ' der Delegate, der auszuführen ist Private ReadOnly _execute As Action(Of Object) Private ReadOnly _canExecute As Predicate(Of Object) #End Region ' Fields #Region "Constructors" ''' <summary> ''' Neuen Befehl (Command) erzeugen, der immer ausgefühert werden kann ''' </summary> ''' <param name="execute">The execution logic.</param> Public Sub New(ByVal execute As Action(Of Object)) Me.New(execute, Nothing) End Sub ''' <summary> ''' Neuen Befehl (Command) erzeugen mit zum Befehl gehörenden Methoden, ''' die die dazugehörenden Kriterien prüfen ''' </summary> ''' <param name="execute">The execution logic.</param> ''' <param name="canExecute">The execution status logic.</param> Public Sub New(ByVal execute As Action(Of Object), ByVal canExecute As Predicate(Of Object)) If execute Is Nothing Then Throw New ArgumentNullException("execute") Me._execute = execute Me._canExecute = canExecute End Sub #End Region ' Constructors #Region "ICommand Members" <DebuggerStepThrough()> Public Function CanExecute(ByVal parameter As Object) As Boolean Implements ICommand.CanExecute ' ohne Kriterien wird True geliefert, sonst werden Kriterien geprüft Return If(Me._canExecute Is Nothing, True, Me._canExecute(parameter)) End Function Public Custom Event CanExecuteChanged As EventHandler Implements ICommand.CanExecuteChanged AddHandler(ByVal value As EventHandler) AddHandler CommandManager.RequerySuggested, value End AddHandler RemoveHandler(ByVal value As EventHandler) RemoveHandler CommandManager.RequerySuggested, value End RemoveHandler RaiseEvent(ByVal sender As Object, ByVal e As EventArgs) End RaiseEvent End Event Public Sub Execute(ByVal parameter As Object) Implements ICommand.Execute Me._execute(parameter) End Sub #End Region ' ICommand Members End Class
--
Best Regards / Viele Grüße
Peter Fleischer (former MVP for Developer Technologies)
Homepage, Tipps, Tricks- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 31. März 2020 19:14
-
ich hab es kürzer raus gefunden.
mir hat nur das pack://application:,,,/ gefehlt
so funktioniert es super
Ribbon_Button1.SmallImageSource = New BitmapImage(New Uri("pack://application:,,,/Bild2.png"))
Danke für die Hilfe
- Als Antwort markiert Mattes80 Mittwoch, 1. April 2020 20:49