从列表框项中获取对象值

时间:2012-02-13 23:54:42

标签: c# wcf silverlight windows-phone-7 listbox

我目前正在使用C#开发Windows Phone 7.0应用程序。我有一个Listbox,其中的项目基于WCF服务的结果。我创建了自己的对象,其中包含从数据库中提取的一些值。问题是我不知道如何根据使用webservice获取的items参数的值来更改每个Listbox Item的内容。

结构:

  • 用户进入XAML页面
  • 正在客户端和Web服务之间打开连接
  • webservice返回List<Friend> Friend中的重要参数名为Verified
  • 列表框项目使用:lstFriends.ItemsSource = e.Result;
  • 设置

我想做什么:

  • 我想在参数Verified之后检查每个列表框项并检查它的值。
  • 根据参数是true还是false,Listbox Item中的TextBlock应该有不同的文本。

由于

1 个答案:

答案 0 :(得分:1)

这可能是一种丑陋的方式,没有代码隐藏,但你可以做的是为listboxitem创建一个包含两个文本块(如下)的模板:

<Style x:Key="ListBoxItemStyle1" TargetType="ListBoxItem">
        <Setter Properties... />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListBoxItem">
                    <TextBlock Text="Verified" Visibility={Binding Verified, Converter="{StaticResource BoolToVisibilityConverter}"  />
                    <TextBlock Text="Not Verified" Visibility={Binding Verified, Converter="{StaticResource ReverseBoolToVisibilityConverter}" />
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

然后你必须编写两个转换器:BoolToVisibilityConverter,如果为True则更新已验证为可见的布尔值,如果为第一个文本块则为False,如果为False,则为ReverseBoolToVisibilityConverter,如果为真,则将已验证的布尔值更改为可见,如果为真,则为折叠在第二个文本块。这样,一个文本块将始终在listboxitem中可见,并且将始终折叠一个文本块,具体取决于Verified属性的值。

如果您不知道如何进行值转换器,可以查看HERE

这未经过测试,并不是您需要的所有代码,但它应该可以运行。这假设两个不同的文本块将始终包含相同的文本,并且Verified属性是布尔属性,如果没有,那么您可能想要找出另一种方法来执行它。

第二个想法,你可以只做一个值转换器和一个文本块,并将已验证的值转换为你想要的文本。那会更容易。

<TextBlock Text="{Binding Verified, Converter="{StaticResource VerifiedToTextConverter}" />
相关问题