Je suis nouveau sur WPF et même plus récent sur MVVM. J'ai mis en place une application simple pour essayer de comprendre WPPF. Dans mon application, j'ai ce qui suit:Question pop-up MVVM
MainWindow.xaml -> J'ai un bouton. Je veux que si la souris passe au-dessus de ce bouton, je veux avoir une fenêtre contextuelle simple.
MainWindowViewModel -> J'ai créé une propriété (popupstatus) que j'utiliserais comme déclencheur pour mon gestionnaire d'événement mouseover.
MyPopUp.xaml -> Dans cette vue, j'ai configuré les détails du popup. Je veux utiliser la propriété de MainWindowViewModel pour déclencher si elle devrait apparaître ou non.
Mais même après tout cela, j'ai deux problèmes: Un que je ne peux pas sembler utiliser l'animation pour la propriété que j'ai créée dans mon MainWindowViewModel dans mon fichier MainWindow.xaml. Je reçois un "Impossible de résoudre toutes les références de propriété dans le chemin de propriété" PopUpStatus "." . L'autre est que je ne peux pas me lier à cette propriété dans mon code pop-up non plus. Par la suite je veux avoir un viewmodel pour le popup qui fera quelques trucs plus avancés.
Merci pour votre aide :)
MainWindow.xaml:
<Button.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<BooleanAnimationUsingKeyFrames Storyboard.Target="{Binding .}" Storyboard.TargetProperty="PopUpStatus">
<DiscreteBooleanKeyFrame Value="True" KeyTime="0:0:2"/>
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<BooleanAnimationUsingKeyFrames Storyboard.TargetName="FiberPopUp" Storyboard.TargetProperty="IsOpen">
<DiscreteBooleanKeyFrame Value="False" KeyTime="0:0:2"/>
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Button.Triggers>
</Button>
</Grid>
MainWindowViewModel: privé bool _PopUpStatus = false; MainWindowViewModel publique() { }
public bool PopUpStatus
{
get
{
return _PopUpStatus;
}
set
{
_PopUpStatus = value;
RaisePropertyChanged("PopUpStatus");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(name));
}
de myPopUp.xaml ->
<StackPanel Width="auto" Height="auto" >
<TextBlock Background="White" Foreground="Black" Text="This is a test."/>
<Button Content="ClosePopUp" Click="PopUpClose" />
</StackPanel>
</Popup>
</Grid>