2011-02-10 62 views
4

我有如下数据模板列表框定义项目的可见性:WP7:更改选定的列表框项目

<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}" /> 

的问题是,以下;当用户选择列表框中的一个项目时,我想通过设置可见的堆栈面板来显示其他信息。

任何想法的如何实现这一点(通过XAML或C#)?我试图改变故事板,但我并没有采取这种方法很远。

回答

6

创建具有默认ContentControl呈现ItemTemplate的内容,但也是一个ItemContainerStyle具有与Visibility设置为Collapsed定义的细节内容。然后,更新“选定” VisualState使它集的详细信息面板的VisibilityVisible

<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>
+0

声音有前途的。你能详细说明一下如何做到这一点。我试过这个,我得到一个unhandeld异常“无法解析目标名称详细信息”。 – Rob 2011-02-10 15:21:43