WPF: Opacity ändern in Schleife

26/03/2010 - 12:20 von Jens Stürmer | Report spam
Hallo,
Wahrscheinlich eine übliche Anfàngerfrage.
Ich habe ein UserControll und möchte das langsam einblenden.
Also dachte ich mit, machst du eine Schleife über

1. Opacity erhöhen
2. Thread.Sleep(1000);

Funktioniert aber nicht, weil in der Schleife die Objekte nicht neu
gezeichnet werden und ich das Ergebnis erst am ende der Schleife sehen,
Wie muss ich das richtig machen?

Jens
 

Lesen sie die antworten

#1 Roman Wagner
26/03/2010 - 13:11 | Warnen spam
Hallo,

für sowas benutzt man eine Animation.

Animationen kann man an einem Control über BeginAnimation starten. Das
Property, welches ud animieren möchstest ist Opacity. Damit geht das
wie folgt:

XAML:

<Window x:Class="Test21.Window1"
xmlns="http://schemas.microsoft.com/winfx/...tion"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300" WindowStyle="None"
Opacity="0"
Loaded="Window_Loaded" AllowsTransparency="True">
<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.Close"
CanExecute="CloseBinding_CanExecute"
Executed="CloseBinding_Executed"/>
</Window.CommandBindings>
<Grid>
<Button Content="Close" Command="ApplicationCommands.Close"/>
</Grid>
</Window>

CS:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}

private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.BeginAnimation(Window.OpacityProperty, new DoubleAnimation(1,
new Duration(TimeSpan.FromSeconds(3))));
}

private void CloseBinding_CanExecute(object sender,
CanExecuteRoutedEventArgs e)
{
e.Handled = e.CanExecute = true;
}

private void CloseBinding_Executed(object sender,
ExecutedRoutedEventArgs e)
{
Close();
}
}

Ähnliche fragen