2011-02-10 69 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