0

Windows 8 XAML で To Do リストを作成しようとしています。アイテムを完成させたら、絵コンテで完成し​​たアイテムを消去したい。データ テンプレート内の項目でストーリーボードを実行するにはどうすればよいですか? C# からストーリーボードを実行すると、次のようなエラーが表示されます: WinRT 情報: TargetNamerectangleToDelete を解決できません。

私のストーリーボードは次のようになります。

<Page.Resources>
    <Storyboard x:Name="AnimateDelete">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="rectangleToDelete">
            <EasingDoubleKeyFrame KeyTime="0" Value="-0.333"/>
            <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="-327.5"/>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="rectangleToDelete">
            <EasingDoubleKeyFrame KeyTime="0" Value="0.333"/>
            <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="-163.25"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</Page.Resources>

私の Listview テンプレートは次のようになります。

<ListView.ItemTemplate>
  <DataTemplate>

    <Grid>
      <StackPanel Orientation="Horizontal"
                  Margin="0,0,-393,-15">
        <CheckBox x:Name="CheckBoxComplete"
                  IsChecked="{Binding Complete, Mode=TwoWay}"
                  Checked="CheckBoxComplete_Checked"
                  Content="{Binding Text}"
                  Margin="10,5"
                  VerticalAlignment="Center"
                  MinWidth="300" />
        <Button x:Name="ButtonDelete"
                Click="ButtonDelete_Click"
                Content="Delete" />
      </StackPanel>
      <Rectangle x:Name="rectangle"
                 Fill="#FFF4F4F5"
                 Stroke="Black"
                 StrokeThickness="0"
                 RenderTransformOrigin="0.5,0.5"
                 Margin="319,2,-300,-14"
                 Height="34"
                 VerticalAlignment="Top">
        <Rectangle.RenderTransform>
          <CompositeTransform ScaleX="-1" />
        </Rectangle.RenderTransform>
      </Rectangle>
    </Grid>
  </DataTemplate>
</ListView.ItemTemplate>

私の分離コードは次のようになります。

        Button btn = (Button)sender;
        TodoItem item = btn.DataContext as TodoItem;

        StackPanel stk = (StackPanel)btn.Parent;
        Grid grd = (Grid)stk.Parent;
        Rectangle rect = (Rectangle)grd.Children[1];
        rect.Name = "rectangleToDelete";
        AnimateDelete.Begin();

ご覧のとおり、四角形を見つけて正しい名前を付けようとしましたが、同じエラーが発生します。

どんな助けでも大歓迎です!

ありがとう、トム

4

1 に答える 1

2

DataTemplate には、外部のものとは異なる名前範囲があります。その DataTemplate と Storyboard のコンテンツを独自の UserControl に配置して、機能させることができます。

于 2013-04-22T00:49:01.737 に答える