silverlight - WP7 : Change the visibility of an item in a selected listbox item

标签 silverlight windows-phone-7

我有一个定义了以下数据模板的列表框:

<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#)?我试图改变 Storyboard,但我用这种方法并没有走得很远。

最佳答案

创建 ItemContainerStyle具有默认值 ContentControl介绍ItemTemplate的内容但也有用 Visibility 定义的细节内容设置为 Collapsed .然后,更新“选定”VisualState以便它设置 Visibility详细信息面板到 Visible :

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

关于silverlight - WP7 : Change the visibility of an item in a selected listbox item,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4957336/

相关文章:

silverlight - 微软 Azure 和 Silverlight

image - 在 Silverlight 中显示 GIF

silverlight - MediaElement.NaturalDuration 小于音频的实际持续时间

带导航的 Silverlight MVVM 框架

c# - 从另一个页面更改文本 block 的文本

c# - 使用 LINQ 获取 1-2-3 分数并将其绑定(bind)到 View

c# - 如何从页面中的 App.xaml 获取颜色值

c# - 在运行时更改数据透视表头

c# - 将第一个 ListBoxItem 的高度设置为 WP7 中其他项目的差异

linq - FluentValidation for WP7 - 验证简单类型​​(字符串)