WPF类型转换

          WPF/XAML提供了许多常用数据类型的类型转换器,如Brush、Color、FontWeight、Point等,它们都是派生自TypeConverter的类(如BrushConverter、ColorConverter等)。它们都能提供自动的类型转换工作,但并不完备,如BitmapImage.UriSource绑定不工作,这时我们必须创建自己的类型转换器。
           对于BitmapImage.UriSource的转换我们可以定义以下转换器UriToImageConverter,并以资源的形式创建和引用。
< local:UriToImageConverter x:Key ="LocalUriToImageConverter" />
当然在XAML文件中,你需要声明新的XML命名空间(通常是在XAML的根元素,如窗口或页面):
xmlns:local="clr-namespace: MyApplicationNamespace "
xmlns:地方=“CLR的命名空间:MyApplicationNamespace”
 
然后,在DataTemplate中(这是有可能在那里你会使用这个),您需要使用转换器
< Image x:Name ="imgPhoto" Width ="80" Height ="60" Grid. Row ="0"
Source ="{Binding Path=FilenameUri,
Converter={StaticResource LocalUriToImageConverter}}"
>
 
最后,添加下面的C#代码到您的项目
 
 1:     public class UriToImageConverter : IValueConverter
 2:     {
 3:  
 4:         public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
 5:         {
 6:             if (value == null)
 7:             {
 8:                 return null;
 9:             }
 10:  
 11:             if (value is string)
 12:             {
 13:                 value = new Uri((string)value);
 14:             }
 15:  
 16:             if (value is Uri)
 17:             {                
 18:                 BitmapImage bi = new BitmapImage();
 19:                 bi.BeginInit();
 20:                 bi.DecodePixelWidth = 80;
 21:                 //bi.DecodePixelHeight = 60;                
 22:                 bi.UriSource = (Uri)value;
 23:                 bi.EndInit();
 24:                 return bi;
 25:             }
 26:  
 27:             return null;
 28:         }
 29:  
 30:         public object ConvertBack(object value, Type targetType, object parameter, 
System.Globalization.CultureInfo culture)
 31:         {
 32:             throw new Exception("The method or operation is not implemented.");
 33:         }
 34:  
 35:     }
分享至
一键收藏,随时查看,分享好友!
0人
了这篇文章
类别:未分类┆阅读( 0)┆评论( 0) ┆ 返回博主首页┆ 返回博客首页

你可能感兴趣的:(职场,WPF,类型,休闲)