2013-02-18 32 views
0

我想实现一些我需要显示人员列表和绿色图标(如果他们在线)的东西。这些人按一些类别分组。我正在使用expanderview工具包控件来显示列表。那么如何将图标图像设置为动态可见?我试过这样的东西没有用。在expanderview中动态设置图像的可见性

<DataTemplate x:Key="groupsItemTemplate"> 
      <StackPanel Orientation="Horizontal" Margin="30,5,0,0""> 
       <Image Height="30" Width="30" Source="/Assets/Online.png" Margin="10,5,0,0" Visibility="{Binding IsFriendOnline}"></Image> 
       <TextBlock TextWrapping="NoWrap" FontFamily="Segoe WP Light" FontSize="24" Margin="8,0,0,0" VerticalAlignment="Center" HorizontalAlignment="left" Height="auto" Width="300" Text="{Binding FriendName}"></TextBlock> 
      </StackPanel> 
     </DataTemplate> 

IsFriendOnline是一个整数属性。

回答

1

首先,您需要使用转换器才能将IsFriendOnline属性的值转换为您需要的可见性枚举。

WPF内置了一个“BooleanToVisibilityConverter”,所以如果你有能力将IsFriendOnline改为布尔值(这听起来好像它有点意义)我会沿着这条路线......如果它的命令该属性是一个整数,那么你将需要滚动你自己的转换器,这并不困难。

语法会是这个样子,当你有一个转换器(我下面的代码假设IsFriendOnline是一个布尔值)...

<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> 
    <DataTemplate x:Key="groupsItemTemplate"> 
       <StackPanel Orientation="Horizontal" Margin="30,5,0,0""> 
        <Image Height="30" Width="30" Source="/Assets/Online.png" Margin="10,5,0,0" Visibility="{Binding IsFriendOnline, Converter={StaticResource BooleanToVisibilityConverter}}"></Image> 
        <TextBlock TextWrapping="NoWrap" FontFamily="Segoe WP Light" FontSize="24" Margin="8,0,0,0" VerticalAlignment="Center" HorizontalAlignment="left" Height="auto" Width="300" Text="{Binding FriendName}"></TextBlock> 
       </StackPanel> 
      </DataTemplate> 

希望这有助于...