0

我正在制作一个信使应用程序,为此我使用 lync 客户端。在我的应用程序 UI 中,我在列表视图中获取联系人(这是 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}}"/>

在转换器内部,在某些情况下,我想使用一些需要获取图像源的代码,但是当我们通过绑定获取图像源 <Image Source="{Binding Image}"时,我无法在转换器中获取图像源。

请建议我你的想法。

4

1 回答 1

1

不要使用转换器。使用像素着色器,例如这个灰度效果:http ://bursjootech.blogspot.no/2008/06/grayscale-effect-pixel-shader-effect-in.html

于 2013-01-18T08:12:47.363 回答