我正在制作一个信使应用程序,为此我使用 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}"
时,我无法在转换器中获取图像源。
请建议我你的想法。