C# 在WPF中,如何使用转换器在联系人脱机时对其图像进行灰度化
我正在制作一个messenger应用程序,在该应用程序中,我使用lync client实现此目的。 在我的应用程序UI中,我在listview中获取联系人(LyncClient的对象,具有名称、图像等属性),并将其加载到数据模板中,该数据模板定义如下:C# 在WPF中,如何使用转换器在联系人脱机时对其图像进行灰度化,c#,wpf,data-binding,binding,converter,C#,Wpf,Data Binding,Binding,Converter,我正在制作一个messenger应用程序,在该应用程序中,我使用lync client实现此目的。 在我的应用程序UI中,我在listview中获取联系人(LyncClient的对象,具有名称、图像等属性),并将其加载到数据模板中,该数据模板定义如下: <DataTemplate x:Key="ContactsTemplate"> <Grid HorizontalAlignment="Left" Width="150" Height="150" Margin="
<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的背景绑定到一个转换器,该转换器将可用性状态映射为一种颜色,例如,当联系人可用性繁忙时,stackpanel的背景将变为红色
现在我的问题是如何对图像产生相同的效果?(根据存在状态使图像变为灰色或红色)
我是一个全新的绑定者,完全迷失在这个绑定的概念中
我的想法是:
图像有一个效果均衡处理程序,所以我想到了使用它来达到这个目的
<Image Source="{Binding Image}" Stretch="UniformToFill" AutomationProperties.Name="{Binding Title} effect="{Binding Availability, Converter={StaticResource AvailabilityToPresenceColor}}"/>
不要使用转换器。使用像素着色器,如此灰度效果:在不可用时将不透明度降低到0.5对您有效吗?@kenny,welll我不想改变图像的不透明度,只需使用imagewell thanx的颜色回复AkselK,但是正如我所说的,我想根据用户的状态改变图片的颜色…比如当它忙的时候,图片应该是红色的,或者当它离线的时候,它应该是灰色的。正如你在代码“继续”中所看到的,或者如果可能的话,我想将图像与整个联系人对象绑定……或者如果有其他方式,请告诉我。你可以使用多个DataTrigger来实现这一点。定义两个DataTrigger,它们表示类似或类似的内容。假设您在Contact中具有属性可用性,并且已扩展灰度效果以采用颜色。我没有试过,但可能有人做过。试着在谷歌上搜索wpf颜色覆盖像素着色器或其他东西。