2013-02-18 31 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> 

希望這有助於...