Warum Zugriff auf mein Storyboard-x: Name Arbeit in Silverlight, aber nicht in WPF?

StackOverflow https://stackoverflow.com/questions/681054

  •  22-08-2019
  •  | 
  •  

Frage

Der folgende WPF-Code wird den Fehler:. Der Name 'zipButtonOut' existiert nicht im aktuellen Kontext

Allerdings ist der gleiche Code funktioniert in Silverlight, wie ich hier zeigen: http: / /tanguay.info/web/index.php?pg=codeExamples&id=65

Was muß ich an den WPF-Code tun zu können, die Storyboard innerhalb Window.Resources zugreifen? Ich habe versucht, es in einem WPF-Usercontrol als auch bekam aber den gleichen Fehler.

XAML:

<Window x:Class="TestDataGrid566.Test1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Test1" Height="300" Width="300">
    <Window.Resources>
        <Storyboard x:Name="zipButtonOut" x:Key="zipButtonOut">
            <DoubleAnimation Storyboard.TargetName="buttonContinue"
Storyboard.TargetProperty="Width"
From="0" To="300" Duration="0:0:.2"></DoubleAnimation>
            <DoubleAnimation Storyboard.TargetName="buttonContinue"
Storyboard.TargetProperty="Height"
From="2" To="50" Duration="0:0:.4"></DoubleAnimation>
        </Storyboard>
    </Window.Resources>

    <Grid x:Name="LayoutRoot" Background="White">
        <StackPanel HorizontalAlignment="Center" Margin="20">
            <Button x:Name="buttonBegin" Content="Click here to begin" Background="Green" Click="buttonBegin_Click"/>
            <Button x:Name="buttonContinue" Margin="0 70 0 0" Width="160" Height="2" FontSize="18" Background="Yellow"
Content="Click here to continue" Visibility="Collapsed"></Button>
        </StackPanel>
    </Grid>
</Window>

Code-Behind:

using System.Windows;

namespace TestDataGrid566
{
    public partial class Test1 : Window
    {
        public Test1()
        {
            InitializeComponent();
        }

        private void buttonBegin_Click(object sender, RoutedEventArgs e)
        {
            buttonBegin.Visibility = Visibility.Collapsed;
            buttonContinue.Visibility = Visibility.Visible;
            //zipButtonOut.Begin(); //GETS ERROR: The name 'zipButtonOut' does not exist in the current context.
        }
    }
}
War es hilfreich?

Lösung

Ich weiß nicht, warum es in Silverlight funktioniert, aber in WPF-Steuerelemente Sie durch ihre x auf die Sammlung Ressourcen nicht verfügbar sind hinzuzufügen: Name in der Code-behind. Sie sind zugänglich über die Ressourcen Sammlung durch ihre x: Key, so dass Sie das x entfernen können: Name Attribut und fügen Sie die folgende Zeile Code nur vor der Zeile im Code dahinter geführt wird kommentiert, und es wird funktionieren (uncomment die Linie in Frage, natürlich):

Storyboard zipButtonOut = (Storyboard)Resources["zipButtonOut"];

Beachten Sie, dass dies erfordert die folgende using-Anweisung:

using System.Windows.Media.Animation;

Andere Tipps

Sieht aus wie die VS Silverlight Tools, um eine "zipButtonOut" Accessor für x generieren: Name Ressourcen auch. In der Zukunft, nehmen Sie nur einen Blick auf die erzeugte Datei (wahrscheinlich „test1.g.cs“) im obj Ordner, um zu sehen, welcher Code für x erzeugt wird. Namen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top