このアプリケーションは、この目的でMicrosoftLyncクライアントを使用しているメッセンジャーです。コンテキストの1つで、連絡先(名前、画像、可用性などのプロパティを持つ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>
グリッドコンテナがあり、連絡先の画像と名前を表示する画像とテキストブロックのコントロールがあります。以下に示すように、stackpanelの背景は、可用性ステータスをにマップするコンバータを使用して、lyncContactオブジェクトのAvailabilityプロパティにバインドされます。たとえば、連絡先の可用性がビジーのときにスタックパネルの背景が赤になるように色を付けます。
画像制御にも同様の効果が欲しいです。
私はバインディングに不慣れなので、このバインディングの概念で完全に失われました。
私の考えは、画像用のエフェクト偶数ハンドラーがあるので、それをこの目的に使用して使用することを考えました。
ある条件下でのコンバーター内で、画像ソースを取得する必要があるコードを使用したいのですが、バインディングを介して画像ソースを取得しているためです。
あなたのアイデアを教えてください。
コードでわかるように、
私は画像コントロールのソースをContactオブジェクトのプロパティに<Image Source="{Binding Image}" Stretch="UniformToFill" AutomationProperties.Name="{Binding Title} effect="{Binding Availability, Converter={StaticResource AvailabilityToPresenceColor}}"/>
バインドしているだけです 。ContactオブジェクトのAvailabilityプロパティをIValueConverterのConvertメソッドに送信するか、可能であれば画像をContactObject全体にバインドしたい...または他の方法で知らせてください。
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();
.....
これで、FormatConvertedBitmapタイプのgrayBitmapSourceがあり、それを再びStreamに変換する方法がわかりません。