次のイベントトリガーを持つUserControlがあります。
<UserControl x:Class="TestApp.Views.MyUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding OnLoadedCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
これは、UserControlのコンストラクターを介して設定されています(ServiceLocatorは無視してください。これは単なるプロトタイプです)。
public MyUserControl()
{
InitializeComponent();
DataContext = ServiceLocator.Current.GetInstance<DirectorySearchViewModel>();
}
私のビューモデルには、次のものがあります。
public ICommand OnLoadedCommand { get; private set; }
public MyUserControl()
{
OnLoadedCommand = new DelegateCommand(OnLoaded);
}
public void OnLoaded()
{
}
OnLoadedが呼び出されることはありません。EventNameを..MouseDownと言うように変更すると、機能しますが、Loadedでは機能しません。
それはばかげた間違いだと確信しています(過去に100万回これをやったことを誓います)が、今はそれを理解できないようです