0

此代码总是抛出异常。当我们单击其容器(此处为 ListViewItem)时,是否有一种方法可以让 TextBox (x:Name = "MyBox") 隐藏(淡出)?我的代码有什么问题?

 <ListView x:Name="ListViewMy" IsItemClickEnabled="True" ItemsSource="{Binding list, Mode=TwoWay}" HorizontalAlignment="Left" Height="223" Margin="240,350,0,0" VerticalAlignment="Top" Width="582" >
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ListViewItem">
                            <Grid x:Name="GridMy">
                                <ContentPresenter x:Name="MyContentPresenter">
                                    <ContentPresenter.ContentTemplate>
                                        <DataTemplate x:Key="DataTemplate">
                                            <Grid Background="#FF25C1D1" Margin="-30,0,0,0" x:Name="GridBlue">
                                                <TextBox x:Name="MyBox" HorizontalAlignment="Left" Margin="135,0,0,0" TextWrapping="Wrap" Text="{Binding}" VerticalAlignment="Top" Width="352" Height="81" Background="{x:Null}" BorderBrush="#FF25C1D1" FontFamily="Segoe WP Semibold" FontSize="32" FontWeight="Bold" Foreground="White"/>
                                            </Grid>
                                        </DataTemplate>
                                    </ContentPresenter.ContentTemplate>
                                </ContentPresenter>
                                <VisualStateManager.VisualStateGroups>
                                    <VisualStateGroup x:Name="CommonStates">
                                        <VisualState x:Name="Normal" />
                                        <VisualState x:Name="MouseOver"/>
                                        <VisualState x:Name="Pressed" >
                                            <Storyboard>
                                                <FadeOutThemeAnimation TargetName="MyBox" Duration="0:0:5"></FadeOutThemeAnimation>
                                            </Storyboard>
                                        </VisualState>
                                        <VisualState x:Name="Disabled" />
                                    </VisualStateGroup>
                                </VisualStateManager.VisualStateGroups>
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ListView.ItemContainerStyle>
    </ListView>
4

1 回答 1

0

您的代码的问题是您的动画,在 ListViewItem 的 ControlTemplate 中,应该只针对 ListViewItem 的 ControlTemplate 中的其他元素。DataTemplate 在这里不起作用,因为 x:Name="MyBox" 无法解析。DataTemplates 是 UI 的可重用部分,因此在它们上跳过名称扩展。

实现您的方案的一个好方法是将动画定位到 ContentPresenter,它实际上是您的 ControlTemplate 的一部分,即:

<FadeOutThemeAnimation TargetName="MyContentPresenter" Duration="0:0:5" />
于 2013-08-14T16:37:41.440 回答