C# wpf动画问题
我有一个xaml视图,其中包含我放入内容控件的动画。在xaml的代码隐藏中,我通过故事板查找资源加载动画。到目前为止还不错。我遇到的问题是在我的xaml中有一个按钮,它从视图模型触发一个中继命令,执行数据库调用,然后提示一条消息。我想实现的是,当我点击按钮时,我想显示动画,然后当消息框显示时,我想隐藏动画。到目前为止没有运气 主视图C# wpf动画问题,c#,wpf,C#,Wpf,我有一个xaml视图,其中包含我放入内容控件的动画。在xaml的代码隐藏中,我通过故事板查找资源加载动画。到目前为止还不错。我遇到的问题是在我的xaml中有一个按钮,它从视图模型触发一个中继命令,执行数据库调用,然后提示一条消息。我想实现的是,当我点击按钮时,我想显示动画,然后当消息框显示时,我想隐藏动画。到目前为止没有运气 主视图 <ContentControl Name="loader" /> <StackPanel Orientation="Horizontal" Ho
<ContentControl Name="loader" />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Button Content="Test" Command="{Binding TestCommand, Mode=OneWay}" />
</StackPanel>
TestViewModel
public ICommand TestCommand
{
get
{
return _TestCommand ?? (_TestCommand = new RelayCommand(p => TestSave()));
}
}
private void TestSave()
{
// show loading
if (SaveSuccessFul() == true)
{
//hide loading
MessageBox.Show("Save Completed");
}
}
ViewModel可以在显示消息框之前引发事件
public event EventHandler LoadSuccessful;
private void TestSave()
{
// show loading
if (SaveSuccessFul() == true)
{
//hide loading
if (LoadSuccessful != null)
LoadSuccessful(this, EventArgs.Empty);
MessageBox.Show("Save Completed");
}
}
视图可以注册到该事件,并在收到事件时停止动画
public MainView()
{
InitializeComponent();
_loading = new LoadingUC();
_loaderUC = _loading;
showLoading.Content = _loaderUC;
Storyboard showNewPatUC = FindResource("Test_Loading") as Storyboard;
showNewPatUC.Begin(_loaderUC);
}
void OnLoadSuccessful(object sender, EventArgs args)
{
Storyboard showNewPatUC = FindResource("Test_Loading") as Storyboard;
showNewPathUC.Stop();
}
好的,那么你面临的错误或问题是什么?你的问题是什么?请发布你的代码,这样我们就可以解决它。@Alex Gelman-你能帮忙吗?我添加了一个代码示例。我不知道如何将视图与viewmodel挂钩,因此我省略了在视图中注册到
LoadSuccessful
事件的代码。我仍然不确定如何设置该事件以使其与我的视图和viewmodel一起工作。我将视图与viewmodel挂钩,如下所示:查看以下答案:
public MainView()
{
InitializeComponent();
_loading = new LoadingUC();
_loaderUC = _loading;
showLoading.Content = _loaderUC;
Storyboard showNewPatUC = FindResource("Test_Loading") as Storyboard;
showNewPatUC.Begin(_loaderUC);
}
void OnLoadSuccessful(object sender, EventArgs args)
{
Storyboard showNewPatUC = FindResource("Test_Loading") as Storyboard;
showNewPathUC.Stop();
}