【发布时间】:2010-12-17 02:57:35
【问题描述】:
我是 WPF 新手,甚至是 MVVM 新手。我已经建立了一个简单的应用程序来尝试理解 WPPF。在我的应用程序中,我有以下内容:
MainWindow.xaml -> 我有一个按钮。我想如果鼠标移过这个按钮,我想显示一个简单的弹出窗口。
MainWindowViewModel -> 我创建了一个属性 (popupstatus),我将使用它作为我的 mouseover 事件处理程序的触发器。
MyPopUp.xaml -> 在这个视图中,我设置了弹出窗口的详细信息。我想使用 MainWindowViewModel 中的属性来触发它是否应该显示。
但即便如此,我还是有两个问题:一个是我似乎无法为我在 MainWindow.xaml 文件的 MainWindowViewModel 中创建的属性使用动画。我收到“无法解析属性路径‘PopUpStatus’中的所有属性引用。” .另一个是我也无法在弹出代码中绑定到这个属性。
最终我想要一个用于弹出窗口的视图模型,它可以做一些更高级的事情。
感谢您的帮助:)
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>
主窗口视图模型: 私人布尔_PopUpStatus = false; 公共 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>
【问题讨论】: