【发布时间】:2011-03-10 14:53:51
【问题描述】:
我有一个 Window 并使用 MVVM light toolkit 绑定到 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();
}
但是在显示的窗口中,尽管当我在 Loaded 属性中放置断点时正在初始化 ICommand 变量,但不会引发异常。我尝试改用 Initialized 事件,但还是一样。这在我在同一个应用程序中拥有的另一个窗口中工作正常,所以我几乎可以肯定我做的一切都是正确的 - 可能有我遗漏的东西吗?当我与代码隐藏绑定时,它工作正常,但我想坚持 mvvm 模式。 提前致谢。
【问题讨论】:
-
您可以发布您用于 CreateAsyncRelayCommand 的代码吗?我用标准的 RelayCommand 尝试了这个,它按预期工作。
标签: .net wpf mvvm mvvm-light