2013-07-29 20 views
20

Görünüm bittiğinde çalıştırılacak bir yöntem bulmaya çalışıyorum. Görünümde Loaded olayına bir komut bağlamayı denedim ancak çalışma başarısız. atılan iç istisnaYüklenmiş olay görünümüne Bind komutu

System.Windows.Data.Binding 'üzerinde değer sağlayın 'is' bir istisna attı.' Satır numarası '14' ve hat konumu '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}"> 

nasıl görünüm yüklenmesi tamamlandıktan sonra bir şey çalışabilmesi için bir görünüme ’ s Loaded olayı bağlamak mümkün ben?

cevap

34

Loaded olayına komut bağlamak istiyorsanız, "System.Windows.Interactivity" derlemini kullanmalısınız.

<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 Yazılım Geliştirme Kiti (SDK) (download link) bulunmaktadır.

+1

+1 Beni saniyelerle bitir, yine de CallMethodAction eylem rotasına gidecektim. –

+3

Cevabınız için teşekkür ederiz. Bu arada, .NET framework derlemelerinde ('... \ Microsoft SDKs \ Expression \ Blend \ .NETFramework \ v4.5 \ Libraries \ System.Windows.Interactivity \ 'de bulunduğundan .dll dosyasını indirmeye gerek yoktur. .dll') – Eido95