2012-09-27 102 views
0

我有一個xaml視圖,其中包含一個動畫,我把它放入一個內容控件。在xaml後面的代碼中,我通過故事板查找資源加載動畫。迄今爲止這很好。我遇到的問題是在我的xaml中有一個按鈕,它觸發視圖模型中的中繼命令,執行數據庫調用,然後提示消息。我想實現的是當我點擊按鈕時,我想顯示動畫,然後當消息框顯示時,我想隱藏動畫。到目前爲止沒有運氣。wpf問題與動畫

的MainView

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

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

    } 
} 
+0

好的,所以你面對的錯誤或問題是什麼?你有什麼問題? – Patrick

+0

請發佈您的代碼,以便我們弄清楚。 – HichemSeeSharp

+0

@HichemC - 更新 – Calvin

回答

0

您的視圖模型可以只顯示消息框之前引發事件。

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(); 
} 
+0

@ Alex Gelman - 你能幫忙嗎? – Calvin

+0

我已經添加了一個代碼示例。我不知道如何用viewmodel鉤住視圖,所以我省略了在視圖中註冊到'LoadSuccessful'事件的代碼。 –

+0

我仍然不確定如何設置事件以使其與視圖和視圖模型一起工作。我使用viewmodel鉤住視圖,如下所示: Calvin