[英]Window is loading first then Command is firing when I am using Interactivity
我在加載窗口期間使用以下代碼在ViewModel中調用LoadCommand。
<code>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding LoadCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</code>
但是我看到的是在LoadCommand觸發之前Window正在加載。所以我在LoadCommand中放入的代碼
public ICommand LoadCommand
{
get
{
if (_loadCommand == null)
{
_loadCommand = new RelayCommand(
param => this.Load(),
param => this.CanLoad
);
}
return _loadCommand;
}
}
List<Match> matchList;
ObservableCollection<Match> _matchObsCollection;
public ObservableCollection<Match> MatchObsCollection
{
get { return _matchObsCollection; }
set
{
_matchObsCollection = value;
OnPropertyChanged("MatchObsCollection");
}
}
public void Load()
{
matchList = matchBLL.GetMatch();
}
bool CanLoad
{
get { return true; }
}
如果我將代碼放入ViewModel的構造函數中,則會在窗口加載之前觸發。 我想知道如何在MVVM中使命令首先執行並隨后加載Window。 預先感謝您。
問題似乎是在實例化ViewModel並將其綁定到DataContext之前已加載了窗口。 解決方案是在View之前實例化ViewModel。
var vm = new MyViewModel();
var view = new MyView();
view.DataContext = vm;
view.Show();
不要使用實例化視圖然后“發現”適用視圖模型的框架,至少在這種情況下不這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.