반응형
DataContext 속성을 사용하여 XAML의 창에서 ViewModel을 설정하려면 어떻게해야합니까?
질문은 거의 모든 것을 말합니다.
나는 창이 있고 ViewModel에 전체 네임 스페이스를 사용하여 DataContext를 설정하려고 시도했지만 뭔가 잘못된 것 같습니다.
<Window x:Class="BuildAssistantUI.BuildAssistantWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
DataContext="BuildAssistantUI.ViewModels.MainViewModel">
다른 사람들이 제공 한 솔루션 (좋고 올바른) 외에도 XAML에서 ViewModel을 지정하면서도 특정 ViewModel을 View에서 분리하는 방법이 있습니다. 분리 된 테스트 케이스를 작성하고자 할 때 유용합니다.
App.xaml에서 :
<Application
x:Class="BuildAssistantUI.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:BuildAssistantUI.ViewModels"
StartupUri="MainWindow.xaml"
>
<Application.Resources>
<local:MainViewModel x:Key="MainViewModel" />
</Application.Resources>
</Application>
MainWindow.xaml에서 :
<Window x:Class="BuildAssistantUI.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
DataContext="{StaticResource MainViewModel}"
/>
대신 이것을 시도하십시오.
<Window x:Class="BuildAssistantUI.BuildAssistantWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:VM="clr-namespace:BuildAssistantUI.ViewModels">
<Window.DataContext>
<VM:MainViewModel />
</Window.DataContext>
</Window>
MainViewModel을 인스턴스화하고 데이터 컨텍스트로 설정해야합니다. 귀하의 진술에서 그것은 단지 그것을 문자열 값으로 간주합니다.
<Window x:Class="BuildAssistantUI.BuildAssistantWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:BuildAssistantUI.ViewModels">
<Window.DataContext>
<local:MainViewModel/>
</Window.DataContext>
You might want to try Catel. It allows you to define a DataWindow class (instead of Window), and that class automatically creates the view model for you. This way, you can use the declaration of the ViewModel as you did in your original post, and the view model will still be created and set as DataContext.
See this article for an example.
반응형
'Programing' 카테고리의 다른 글
ipython 노트북 출력 창 크기 조정 (0) | 2020.09.08 |
---|---|
Elasticsearch에서 연결 거부 오류 (0) | 2020.09.08 |
문자열을 변수 이름으로 변환 (0) | 2020.09.08 |
파이썬에서 변수 인수 (kwargs)에서 클래스 속성을 설정하는 방법 (0) | 2020.09.08 |
개방형 Android 스트로크? (0) | 2020.09.08 |