我通常在codebehind中實例化ViewModel,並將其設置爲Window或UserControl的DataContext。在XAML中設置代碼時訪問DataContext實例
對於這個簡單的視圖模型:
public class ViewModel
{
public ObservableCollection<string> items { get; set; }
public ViewModel()
{
items = new ObservableCollection<string>();
items.Add("FirstItem");
items.Add("SecondItem");
items.Add("ThirdItem");
}
}
我加入我的本地命名空間和下面的語法將設置正確的事情:
<Window.DataContext>
<local:ViewModel/>
</Window.DataContext>
很好,我明白,一個視圖模型對象實例化和爲窗口設置爲DataContext,它按預期工作,但有什麼辦法從代碼訪問實例化的對象?
如果我創建
ViewModel vm = new VewModel();
this.DataContext = vm;
在代碼隱藏的對象,我能夠訪問虛擬機實例,但與XAML的做法,又怎能達到?
我已經創建了這個小例子,以瞭解是否有簡單的答案可用。
+1,但是在XAML中設置'DataContext'並不總是正確的。例如,如果您的ViewModel是通過View的構造函數注入的,那麼將其設置爲代碼隱藏是正確的方法。 – almulo