我目前正在使用C#开发Windows Phone 7.0应用程序。我有一个Listbox,其中的项目基于WCF服务的结果。我创建了自己的对象,其中包含从数据库中提取的一些值。问题是我不知道如何根据使用webservice获取的items参数的值来更改每个Listbox Item的内容。
结构:
List<Friend>
Friend中的重要参数名为Verified
lstFriends.ItemsSource = e.Result;
我想做什么:
Verified
之后检查每个列表框项并检查它的值。由于
答案 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}" />