Я новичок в WPF и еще новее в MVVM. Я создал простое приложение, чтобы попытаться понять WPPF. В моем заявлении у меня есть следующее:
MainWindow.xaml -> У меня есть кнопка. Я хочу, чтобы при наведении мыши на эту кнопку, я хотел, чтобы появилось простое всплывающее окно.
MainWindowViewModel -> Я создал свойство (popupstatus), которое я использовал бы в качестве триггера для моего обработчика события mouseover.
MyPopUp.xaml -> В этом представлении я настроил детали всплывающего окна. Я хочу использовать свойство из MainWindowViewModel для запуска, если оно должно отображаться или нет.
Но даже после всего этого у меня возникли две проблемы: во-первых, я не могу использовать анимацию для свойства, которое я создал в своем MainWindowViewModel в моем файле MainWindow.xaml. Я получаю «Не удается разрешить все ссылки на свойства в пути свойства« PopUpStatus ».» , Во-вторых, я не могу связать это свойство в моем всплывающем коде.
В конце концов, я хочу иметь view-модель для всплывающего окна, которая сделает некоторые более сложные вещи.
Спасибо за вашу помощь:)
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:
private bool _PopUpStatus = false;
public MainWindowViewModel ()
{
} * * Тысяча двадцать-один
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));
}
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>