How to implement string path to Image Converter in WPF?
In this article I will discuss how to create Image converter from giving path. Please follow below steps to implement this functionality.
Step 1- Add a new class for converter
Step 2- Call that converter from view by bindings. Please check below code where I am passing image iconpath as a string.
That's it image will display on the layout.
Step 1- Add a new class for converter
public class ImageToSourceConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (targetType == typeof(ImageSource)) { if (value is string) { string str = (string)value; return new BitmapImage(new Uri(str, UriKind.RelativeOrAbsolute)); } else if (value is Uri) { Uri uri = (Uri)value; return new BitmapImage(uri); } } return value; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } }
Step 2- Call that converter from view by bindings. Please check below code where I am passing image iconpath as a string.
<Window x:Class="inventory.View.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:ViewModel="clr-namespace:inventory.ViewModel" xmlns:Convertor="clr-namespace:inventory.Converters" xmlns:View="clr-namespace:inventory.View" Icon="./../Files/inventory-icon.png" Title="Inventory" Height="600" Width="800" MouseLeftButtonDown="Drag_Window" ShowInTaskbar="True" WindowStartupLocation="CenterScreen" FontFamily="Georgia" Background="Transparent" Style="{DynamicResource MainWindowStyle}" x:Name="window" TabIndex="0" Foreground="#FFFFFFFF"> <Window.Resources> <Convertor:ImageToSourceConverter x:Key="ImageSourceConverter"> </Window.Resources> <Grid> <Grid.RowDefinitions> <RowDefinition Height="*"/> </Grid.RowDefinitions> <ListBox> ItemsSource="{Binding YourSource}" <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <Image Source="{Binding IconPath,Converter={StaticResource ImageSourceConverter}}" Width="25" /> <TextBlock Text="{Binding Name}" Padding="10"/> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </Grid> </Window>
0 comments :
Post a Comment