2013-07-29 39 views
20

我想獲得一個方法來在視圖加載完成時運行。我試圖將命令綁定到視圖中的Loaded事件,但它無法運行。拋出的內部異常是綁定命令加載視圖的事件

'在'System.Windows.Data.Binding'上提供值引發異常。' 行號「14」和線位置「14」

<UserControl x:Class="Components.Map.MapView" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:map="clr-namespace:Components.Map" 
      xmlns:controls="clr-namespace:Windows.Controls;assembly=Windows.Controls" 
      xmlns:ValidationRules="clr-namespace:Windows.Controls.ValidationRules;assembly=Windows.Controls" 
      xmlns:directGraphicsControl="clr-namespace:Windows.DirectGraphicsControl;assembly=Windows.DirectGraphicsControl" 
      xmlns:colorBar="clr-namespace:Components.Common.ColorBar;assembly=Components.Common" 
      xmlns:RefinedRibbonControls="clr-namespace:Components.Common.Controls.RefinedRibbonControls;assembly=Components.Common" 
      xmlns:UserControls="clr-namespace:Components.Common.UserControls;assembly=Components.Common" 
      xmlns:map1="clr-namespace:Models.Map;assembly=Models.Map" 
      xmlns:utilities="clr-namespace:Windows.Utilities;assembly=Windows.Utilities" 
      xmlns:system="clr-namespace:System;assembly=mscorlib" 
      Loaded="{Binding Path=MapControlViewModel.MapLoadedCommand}"> 

我怎麼能夠綁定到一個視圖’小號Loaded事件所以觀點已經加載完成後,我可以運行的東西嗎?

回答

34

如果要將命令綁定到Loaded事件,則應使用「System.Windows.Interactivity」程序集。

<UserControl x:Class="Components.Map.MapView" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:map="clr-namespace:Components.Map" 
      xmlns:controls="clr-namespace:Windows.Controls;assembly=Windows.Controls" 
      xmlns:ValidationRules="clr-namespace:Windows.Controls.ValidationRules;assembly=Windows.Controls" 
      xmlns:directGraphicsControl="clr-namespace:Windows.DirectGraphicsControl;assembly=Windows.DirectGraphicsControl" 
      xmlns:colorBar="clr-namespace:Components.Common.ColorBar;assembly=Components.Common" 
      xmlns:RefinedRibbonControls="clr-namespace:Components.Common.Controls.RefinedRibbonControls;assembly=Components.Common" 
      xmlns:UserControls="clr-namespace:Components.Common.UserControls;assembly=Components.Common" 
      xmlns:map1="clr-namespace:Models.Map;assembly=Models.Map" 
      xmlns:utilities="clr-namespace:Windows.Utilities;assembly=Windows.Utilities" 
      xmlns:system="clr-namespace:System;assembly=mscorlib" 
      xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"> 

      <i:Interaction.Triggers> 
       <i:EventTrigger EventName="Loaded"> 
        <i:InvokeCommandAction Command="{Binding LoadedCommand}" /> 
       </i:EventTrigger> 
      </i:Interaction.Triggers> 

</UserControl> 

System.Windows.Interactivity.dll是在Microsoft Expression Blend軟件開發工具包(SDK)(download link)。

+1

+1雖然我打算去CallMethodAction行動路線,但還是要秒殺我。 –

+3

謝謝你的回答。順便說一下,沒有必要下載.dll,因爲它已經位於.NET框架程序集('... \ Microsoft SDKs \ Expression \ Blend \ .NETFramework \ v4.5 \ Libraries \ System.Windows.Interactivity .dll') – Eido95

相關問題