J'essaie de suivre this little tutorial, mais je reçois toujours cette exception.StackOverflowException sur InitializeComponent
Le XAML concerné ressemble à ceci:
<StatusBar Margin="0,288,0,0" Name="statusBar" Height="23" VerticalAlignment="Bottom">
<StatusBar.DataContext>
<m:MainWindow />
</StatusBar.DataContext>
<TextBlock Name="statusText" Text="{Binding Path=StatusBarText, NotifyOnTargetUpdated=True}" DataContext="{Binding}">
<TextBlock.Triggers>
<EventTrigger RoutedEvent="Binding.TargetUpdated">
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.25" Value="1"/>
<EasingDoubleKeyFrame KeyTime="0:0:4" Value="1"/>
<EasingDoubleKeyFrame KeyTime="0:0:5" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</TextBlock.Triggers>
</TextBlock>
</StatusBar>
Je devine que je reçois le StackOverflowException
parce que je suis en train d'utiliser MainWindow
comme DataContext
. Je veux utiliser le MainWindow
parce qu'il semble être un endroit logique pour mettre ma propriété StatusBarText
,
public partial class MainWindow : Window
{
public string StatusBarText { get; set; }
Il facilite l'accès à mon code-behind gestionnaires d'événements. Qu'est-ce que je suis supposé faire alors? Où suis-je censé mettre cette propriété? Ou existe-t-il un moyen de définir le DataContext sur "this" afin qu'il ne crée pas une nouvelle instance de MainWindow et se réfère simplement à lui-même?
Parfait! Bon appel sur le 'NotifyPropertyChanged' aussi .. J'ai découvert que je pourrais mettre le' DataContext' 'this' dans le code derrière une seconde avant que vous l'ayez posté, mais alors j'ai rencontré le problème que vous avez mentionné. Assez facile à notifier si ~! – mpen