簡體   English   中英

當我使用交互性時,先加載窗口,然后觸發命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM