![](/img/trans.png)
[英]How do I set DataContext of a View to ViewModel when using DialogService
[英]In C#, how can I set DataContext on a View from the ViewModel?
我正在嘗試把頭放在MVVM上。我了解很多,但是卻很難把握一個方面: 設置DataContext 。
我想顯示帶有特定對象的視圖。 用戶無法決定可見的內容,因此我需要在代碼中創建視圖。 然后,我想將視圖的DataContext設置為一個對象(用於綁定)。 我試圖不為此在視圖中放置代碼,但是View.LayoutRoot.DataContext是不公開的。
我想念什么?
試圖避免這種情況:
public class View
{
public View(object dataContext)
{
InitializeComponent();
LayoutRoot.DataContext = dataContext;
}
}
像這樣:
public class ViewModel
{
...
public UIElement GetView()
{
UIElement *element = new View();
element.LayoutRoot.DataContext = element;
return element;
}
}
如果使用XAML控件或Window(如果使用MVVM,則應該是這種情況),則LayoutRoot(默認為Grid)是公共的。 在您的示例中,您僅對View使用普通類,因此很難說出正在發生什么。
同樣,我支持卡梅倫的觀點-View或ModelView都不應該處理分配DataContext的問題。 它可以通過不同的方式來完成(DataTemplate,依賴項注入,特殊的構建器類,普通代碼),但是通常它發生在應用程序級別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.