mvvm-light 工具包未触发 Window Loaded 事件
我有一个窗口并使用 MVVM light 工具包绑定到 Loaded 事件:
<Window
...
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF4"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
...
>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<cmd:EventToCommand Command="{Binding Loaded, Mode=OneWay}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Window>
在我的视图模型中,我有以下内容:
private ICommand _loaded;
public ICommand Loaded
{
get
{
if (_loaded == null)
{
_loaded = CreateAsyncRelayCommand(p => OnLoaded());
}
return _loaded;
}
}
public void OnLoaded()
{
throw new NotImplementedException();
}
但是在显示的窗口上,尽管 ICommand 变量在我放置时正在初始化,但不会引发异常Loaded 属性中的断点。我尝试更改为使用初始化事件,但仍然是同样的事情。这在同一个应用程序中的另一个窗口中工作得很好,所以我几乎确定我做的一切都是正确的 - 是否有我遗漏的东西?当我与代码隐藏绑定时,它工作正常,但我想遵守 mvvm 模式。 提前致谢。
I have a Window and using MVVM light toolkit to bind to the Loaded event:
<Window
...
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF4"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
...
>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<cmd:EventToCommand Command="{Binding Loaded, Mode=OneWay}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Window>
and in my view-model, I have the following:
private ICommand _loaded;
public ICommand Loaded
{
get
{
if (_loaded == null)
{
_loaded = CreateAsyncRelayCommand(p => OnLoaded());
}
return _loaded;
}
}
public void OnLoaded()
{
throw new NotImplementedException();
}
but on the window showing, the exception isn't thrown although the ICommand variable is being initialized when I put a break point in the Loaded property. I've tried changing to using the Initialized event, but still the same thing. This works fine in another Window I have in the same app, so I'm almost sure I'm doing everything correctly - could there be something I'm missing? When I bind with code-behind, it works fine, but I want to adhere to the mvvm pattern.
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试在构造函数中分配命令,即
Try assigning the command inside your constructor, i.e.