代码之家  ›  专栏  ›  技术社区  ›  Ben

设置可见性的Silverlight触发器

  •  0
  • Ben  · 技术社区  · 14 年前

    我有一个修改了数据模板的列表框(它包含一个超链接按钮和每个项目的文本框)。我希望默认情况下按钮不可见,但当鼠标悬停在特定列表框项上时,按钮将变为可见。到目前为止,我尝试过的XAML不起作用,我也不知道为什么(不起作用,我的意思是它无法编译)。

     <ListBox Name="lstTest">
          <ListBox.Template>
            <ControlTemplate>
              <ListBox ItemsSource="{Binding}">
                <StackPanel >
                  <TextBlock Text="{Binding Path=Name}"/>
                  <HyperlinkButton Name="hypEdit" Content="Edit" Visibility="Collapsed"   />
                </StackPanel>
                <ListBox.Triggers>
                  <EventTrigger RoutedEvent="ListBoxItem.MouseEnter" >
                    <BeginStoryboard>
                      <Storyboard>
                        <DoubleAnimation Storyboard.TargetName="hypEdit" Storyboard.TargetProperty="Visibility"
                                   From="Collapsed" To="Visible" Duration="0:0:5" AutoReverse="True" RepeatBehavior="Forever" />
                      </Storyboard>
                    </BeginStoryboard>
                  </EventTrigger>
                </ListBox.Triggers>
              </ListBox>
              </ControlTemplate>
           </ListBox.Template>
         </ListBox>
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   iCollect.it Ltd    14 年前

    你得到了什么编译错误?我可以编译它,但我不希望它能工作。

    您似乎通过在其模板中定义另一个列表框来定义该列表框。是故意的吗?我希望基本项模板如下所示(网格可选):

        <ListBox Name="lstTest" ItemsSource="{Binding}>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <StackPanel VerticalAlignment="Top">
                            <TextBlock Text="{Binding Name}"/>
                            <HyperlinkButton Content="Edit" />
                        </StackPanel>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    

    <UserControl
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:System="clr-namespace:System;assembly=mscorlib" 
        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
        xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" 
        x:Class="SilverlightApplication1.SilverlightTrigger"
        mc:Ignorable="d"
        d:DesignHeight="300" d:DesignWidth="400">
    
        <Grid x:Name="LayoutRoot" Background="White">
            <ListBox VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ItemsSource="{Binding}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid.Resources>
                                <Storyboard x:Name="Storyboard1">
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="hypEdit">
                                        <DiscreteObjectKeyFrame KeyTime="0:0:0.5">
                                            <DiscreteObjectKeyFrame.Value>
                                                <Visibility>Visible</Visibility>
                                            </DiscreteObjectKeyFrame.Value>
                                        </DiscreteObjectKeyFrame>
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                                <Storyboard x:Name="Storyboard2">
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="hypEdit">
                                        <DiscreteObjectKeyFrame KeyTime="0:0:0.5">
                                            <DiscreteObjectKeyFrame.Value>
                                                <Visibility>Collapsed</Visibility>
                                            </DiscreteObjectKeyFrame.Value>
                                        </DiscreteObjectKeyFrame>
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </Grid.Resources>
                            <i:Interaction.Triggers>
                                <i:EventTrigger EventName="MouseEnter">
                                    <ei:ControlStoryboardAction Storyboard="{StaticResource Storyboard1}"/>
                                </i:EventTrigger>
                                <i:EventTrigger EventName="MouseLeave">
                                    <ei:ControlStoryboardAction Storyboard="{StaticResource Storyboard2}"/>
                                </i:EventTrigger>
                            </i:Interaction.Triggers>
                            <StackPanel VerticalAlignment="Top">
                                <TextBlock TextWrapping="Wrap" Text="{Binding Name}" d:LayoutOverrides="Width"/>
                                <HyperlinkButton x:Name="hypEdit" Content="Edit" d:LayoutOverrides="Width" Visibility="Collapsed"/>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </Grid>
    </UserControl>