Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF中,如何使用转换器在联系人脱机时对其图像进行灰度化_C#_Wpf_Data Binding_Binding_Converter - Fatal编程技术网

C# 在WPF中,如何使用转换器在联系人脱机时对其图像进行灰度化

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="

我正在制作一个messenger应用程序,在该应用程序中,我使用lync client实现此目的。 在我的应用程序UI中,我在listview中获取联系人(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的背景绑定到一个转换器,该转换器将可用性状态映射为一种颜色,例如,当联系人可用性繁忙时,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颜色覆盖像素着色器或其他东西。