2016-09-17 9 views
0

達成したいこと:エレメントがロードされたときにコマンドをトリガーし、このエレメントにRefferenceを取得したいので、 MainViewModel.csコマンドをバインドするためのイベントをバインドしてUIエレメントに反映させる

私は、このXAMLコードを書いた:

<visualizer:PreviewTile DisplayName="Share Tile" TileSize="Wide" Background="Red" IsAnimationEnabled="True" x:Name="P"> 
     <interactivity:Interaction.Behaviors> 
      <core:EventTriggerBehavior EventName="Loaded"> 
       <core:InvokeCommandAction Command="{Binding LoadedVisualizer}"></core:InvokeCommandAction> 
      </core:EventTriggerBehavior> 
     </interactivity:Interaction.Behaviors> 
    </visualizer:PreviewTile> 

をし、コードのこの作品追加しました:

private RelayCommand _loadedVisualizerCommand; 
    public RelayCommand LoadedVisualizer 
    { 
     get 
     { 
      return _loadedVisualizerCommand 
        ?? (_loadedVisualizerCommand = new RelayCommand(
         async() => 
         { 
          await new MessageDialog("Loaded", "Some Content").ShowAsync(); 
         })); 
     } 
    } 

をしかしときメソッドが呼び出されません、私が試した何

ロードされたイベントが発生しています。

は、だから私は、コントロールにRefferenceを取得するには、これを試してみましたが、それはNullRefference例外投げされています。そこにもかかわらず

public MainPage() 
    { 

     InitializeComponent();  

     Loaded += (s, e) => 
     { 
      Vm.PreviewTile = P; 
     }; 

    } 

MainViewModel

MainPage.xaml.cs
public PreviewTile PreviewTile { get; set; } 

をmvvmのライトでイベントを使用することについてのいくつかの記事や質問があります(未回答のものがいくつかあります)。

答えて

0

私が見ることができる唯一の理由は、PageDataContextが正しく設定されていないことです。ページMainViewModelを使用し、あなたのViewModelLocatorクラスでそれを追加しました:その後、

public class ViewModelLocator 
{ 
    static ViewModelLocator() 
    { 
     ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); 

     SimpleIoc.Default.Register<MainViewModel>(); 
    } 

    public MainViewModel Main => ServiceLocator.Current.GetInstance<MainViewModel>(); 
} 

そして、あなたのMainPageにそれを使用する:予想通り今

<Page ... 
DataContext="{Binding Source={StaticResource Locator}, Path=Main}"> 

EventTriggerBehaviorは動作するはずです。

私はあなたにチェックアウトするためsample project on my GitHubを入れました。

+0

答えとサンプルプロジェクト - ありがとう、誰かがこれを落とした理由を教えてくれてありがとう –

+0

すごくうれしくて助かりました:-) –

関連する問題