该应用程序是一个信使,我为此目的使用 microsoft lync 客户端。在其中一个上下文中,我在列表视图中获取联系人(这是 LyncClient 的一个对象,具有名称、图像、可用性等属性)并将它们加载到定义如下的数据模板中:
<DataTemplate x:Key="ContactsTemplate">
<Grid HorizontalAlignment="Left" Width="150" Height="150" Margin="10">
<Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}">
<Image Source="{Binding Image}" Stretch="UniformToFill" AutomationProperties.Name="{Binding Title}"/>
</Border>
<StackPanel VerticalAlignment="Bottom" Background="{Binding Availability, Converter={StaticResource AvailabilityToPresenceColor}}" Opacity="0.75">
<TextBlock Text="{Binding Name}" Foreground="{StaticResource ListViewItemOverlayForegroundThemeBrush}" Style="{StaticResource TitleTextStyle}" Height="20" Margin="15,0,15,15"/>
</StackPanel>
</Grid>
</DataTemplate>
它有一个 Grid 容器,其中我们有一个图像和文本块控件,它们显示联系人的图像和名称,如下所示,stackpanel 的背景绑定到 lync联系人对象的可用性属性,并使用转换器将可用性状态映射到颜色,例如当联系人忙时,stackpanel 的背景将变为红色。
我也想对图像控件产生类似的效果。
我是绑定新手,所以完全迷失在这个绑定概念中。
我的想法是:图像有一个效果事件处理程序,所以我想为此目的使用它并使用
在某些情况下在转换器内部我想使用一些我需要获取图像源的代码,但是当我们通过绑定获取图像源时
请建议我你的想法。
正如您在代码中看到的那样,
<Image Source="{Binding Image}" Stretch="UniformToFill" AutomationProperties.Name="{Binding Title} effect="{Binding Availability, Converter={StaticResource AvailabilityToPresenceColor}}"/>
我只是将图像控件的源与 Contact对象的属性绑定。我想将 Contact 对象的可用性属性发送到 IValueConverter 的 Convert 方法,或者如果可能的话,我想将图像与整个Contact对象绑定……或者如果有其他方式,请告诉我。
var bitmap = new BitmapImage();
bitmap.BeginInit();
MemoreyStream ms=new MemoryStream(_image);
bitmap.StreamSource = stream;
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.EndInit();
var grayBitmapSource = new FormatConvertedBitmap();
grayBitmapSource.BeginInit();
grayBitmapSource.Source = ms;
grayBitmapSource.DestinationFormat = PixelFormats.Gray32Float;
grayBitmapSource.EndInit();
.....
现在问题是我有 grayBitmapSource,它的类型是 FormatConvertedBitmap,我不知道如何再次将其转换为 Stream。