C#에서 ViewModel에서보기에서 Datacontext를 어떻게 설정할 수 있습니까?
-
20-08-2019 - |
문제
나는 "MVVM 주위에 머리를 감싸려고 노력하고 있습니다. 많은 것을 이해하지만 한 가지 측면을 이해하는 데 어려움이 있습니다. 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 컨트롤 또는 창 (MVVM을 사용하는 경우)을 사용하는 경우 LayouTroot (기본적으로 그리드)가 공개됩니다. 예에서 볼 때 일반 클래스 만 사용하므로 무슨 일이 일어나고 있는지 말하기는 어렵습니다.
또한 두 번째 Cameron의 의견 - View 또는 ModelView는 DataContext 할당을 처리해야합니다. 다양한 방식으로 수행 할 수 있지만 (DataTemplate, 종속성 주입, 특수 빌더 클래스, 일반 코드) 일반적으로 응용 프로그램 수준에서 발생합니다.
제휴하지 않습니다 StackOverflow