Silverlight WP7:更改选定列表框项目中项目的可见性
我有一个定义了以下数据模板的列表框:Silverlight WP7:更改选定列表框项目中项目的可见性,silverlight,windows-phone-7,Silverlight,Windows Phone 7,我有一个定义了以下数据模板的列表框: <DataTemplate x:Name="MyTemplate"> <StackPanel> <TextBlock Name="textblock1" Text="{Binding Name}" /> <TextBlock Name="textblock2" Text="{Binding SurName}" /> <StackPanel Name=
<DataTemplate x:Name="MyTemplate">
<StackPanel>
<TextBlock Name="textblock1" Text="{Binding Name}" />
<TextBlock Name="textblock2" Text="{Binding SurName}" />
<StackPanel Name="extrainfo" Visibility="Collapsed">
<TextBlock Name="textblock3" Text="{Binding Address}" />
<TextBlock Name="textblock4" Text="{Binding Phone}" />
<TextBlock Name="textblock5" Text="{Binding Email}" />
</StackPanel>
</StackPanel>
</DataTemplate>
列表框:
<ListBox Name="myListBox" ItemTemplate="{StaticResource MyTemplate}" ItemsSource="{Binding UserList}" />
问题如下:;当用户在列表框中选择一个项目时,我希望通过将stackpanel的可见性设置为visible来显示附加信息
有没有办法(通过xaml或c#)实现这一点?我试图改变故事板,但我没有用这种方法走多远。创建一个
ItemContainerStyle
,它具有默认的ContentControl
来显示ItemTemplate
的内容,但也具有使用可见性设置为折叠的定义的详细内容。然后,更新“选定的”VisualState
,以便将详细信息面板的可见性设置为可见
:
<VisualState x:Name="Selected">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground"
Storyboard.TargetName="ContentContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneAccentBrush}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility"
Storyboard.TargetName="Details">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visibile"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
...
<StackPanel>
<ContentControl
x:Name="ContentContainer"
ContentTemplate="{TemplateBinding ContentTemplate}"
Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
<Grid x:Name="Details">
<!-- Put the content of your details panel here. -->
</Grid>
</StackPanel>
...
听起来很有希望。你能详细说明一下怎么做吗。我尝试了此操作,但得到一个未处理的异常“无法解析Targetname详细信息”。您需要将x:Name=“Details”
添加到ItemContainerStyle
中控件模板中的元素中。我将更新上面的代码示例来说明这一点。+1这是一种合理的方法,可以通过使Xaml所属的样式和模板上下文变得更清晰来实现。