【问题标题】:wpf issue with animation [closed]动画的wpf问题[关闭]
【发布时间】:2012-09-27 16:16:17
【问题描述】:

我有一个 xaml 视图,其中包含我放入内容控件的动画。在 xaml 背后的代码中,我通过故事板查找资源加载动画。到目前为止这很好。我遇到的问题是在我的 xaml 中有一个按钮从视图模型触发中继命令,执行数据库调用然后提示消息。我想要实现的是当我点击按钮时,我想显示动画,然后当消息框显示时,我想隐藏动画。到目前为止还没有运气。

主视图

<ContentControl Name="loader" />

<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
    <Button Content="Test" Command="{Binding TestCommand, Mode=OneWay}" />
</StackPanel> 

MainView.cs

public MainView()
{
    InitializeComponent();

    _loading = new LoadingUC();  
    _loaderUC = _loading;         
    showLoading.Content = _loaderUC;

    Storyboard showUC = FindResource("Test_Loading") as Storyboard;
    showUC.Begin(_loaderUC);    
}

测试视图模型

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");

    }
}

【问题讨论】:

  • 好的,那么您面临的错误或问题是什么?你有什么问题?
  • 请发布您的代码,以便我们弄清楚。

标签: c# wpf


【解决方案1】:

您的 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 - 你能帮忙吗?
  • 我添加了一个代码示例。我不知道如何将视图与视图模型挂钩,所以我省略了注册到视图中LoadSuccessful 事件的代码。
  • 我仍然不确定如何设置事件以使其与我的视图和视图模型一起工作。我将视图与视图模型挂钩,如下所示: 跨度>
猜你喜欢
  • 1970-01-01
  • 2010-11-17
  • 2016-07-07
  • 2014-03-01
  • 2013-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
相关资源
最近更新 更多