在expandderview中动态设置图像的可见性

时间:2013-02-18 15:55:06

标签: c# xaml windows-phone-8 toolkit

我正在尝试实现我需要显示人员列表的内容以及如果他们在线的绿色图标。这些人按某些类别分组。我使用expandderview工具包控件来显示列表。那么如何将图标图像设置为动态可见?我尝试过这样的东西,但没有用。

<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 个答案:

答案 0 :(得分:1)

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

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>

希望这会有所帮助......