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 内の他の要素のみをターゲットにする必要があることです。x:Name="MyBox" が解決されないため、DataTemplate はここでは機能しません。DataTemplate は再利用可能な UI であるため、名前の展開はスキップされます。

シナリオを実現する良い方法は、実際には ControlTemplate の一部である ContentPresenter をアニメーションのターゲットにすることです。

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