2010-02-11 2 views
6

저는 WPF for Windows 응용 프로그램 개발을 처음 접했으므로 먼저이를 먼저 적용하려고했습니다. Visual Studio 2010과 .NET Framework 4.0을 사용하고 있습니다.WPF 및 데이터 바인딩을 사용한 간단한 CRUD 작업

오히려 간단한 관리 도구로 작업하고 있습니다. 단순함을 위해 Employee 데이터로 작업하고 있다고 가정 해 보겠습니다. Employee 클래스와 관련된 모든 필드가있는 UserDetail이라는 작은 UserControl을 만들었습니다.

내 UserDetail의 입력 컨트롤을 바인딩하는 가장 간단한 방법은 무엇입니까? 새 인스턴스를 만들 때 빈 화면이 있거나 기존 인스턴스를 편집하는 경우 기존 값이있을 수 있습니다.

은 내가 생성자에서 다음과 같은 시도 :

DataContext = _employee; 

을 그리고는 XAML이 같은 컨트롤을 바인딩 :

<TextBox Name="txtFirstName" Text="{Binding FirstName}"/> 

이 작동하지만, 올바른 방법은 아닌 것 같아 그것을하기 위해. 이것은 간단한 예제처럼 보이지만 아직 도움이되는 것을 찾지 못했습니다.

간단한 바인딩에 대한 제안이나 자습서 링크가 있습니까?

+0

MVVM의 마술을 이해하면 직원 데이터 (템플릿 만)에 대한 UserControl이 필요하지 않을 것입니다. –

답변

4

마찬가지로 Joel은 올바른 방향이라고 말합니다. 어느 시점에서 코드 뒤에 DataContext를 명시 적으로 설정해야합니다. 이것은 일반적으로 Window 클래스에서와 같이 최상위 레벨에서 수행되며, 이후의 모든 DataContext는 DataBindings를 통해 설정되어야합니다.

예를 들어 사용자가 UserControl에서 작업하고 있다고 가정 해 보겠습니다. 컨트롤이 사용되는 곳에서 UserDetails 컨트롤의 DataContext를 직접 바인딩 할 수 있어야합니다. 따라서 UserControl에 대한 코드에서 DataContext를 설정할 필요가 없습니다. 적어도 일반적으로 UserControl 사용자는 UserControl에게 사용할 데이터를 누가 알릴 것인지를 결정합니다.

SelectedEmployee 속성을 가진 AllEmployees 클래스가 있다고 가정 해 보겠습니다. 이 객체의 인스턴스를 Window의 DataContext로 설정합니다 (코드 숨김). 이제 창에 SelectedEmployee에 대한 사용자 세부 정보가 표시됩니다. 된 UserDetails 컨트롤은 그것의 DataContext에 바인드 직원 개체가 가정 내장되어, 지금 당신은 데이터 바인딩이 설정하여 하나를 가지고 있는지 확인하십시오 :

<Window xmlns:local="YourNamespaceHoldingTheUserDetailsControl> 
    .. 
    <local:UserDetails DataContext={Binding SelectedEmployee} /> 
    .. 
</Window> 

당신은 또한 당신의 UserDetails 클래스에 직원 속성을 추가 할 수있는 바인딩에서 더 잘 보인다면 DataContext를 설정할 것입니다.

GUI와 도메인 모델 간의 분리를 향상 시키려면 the MVVM pattern에 대해 자세히 알아야합니다. 처음에 Jason Dollinger가 몇 번이나 this video을보고 배웠습니다. 이 비디오는 WPF에 대한 많은 유용한 것들을 가르쳐 줄 것입니다. This question에는 주제에 대한 유용한 링크가있는 것 같습니다.

행운을 빕니다 학습 WPF! 다른 GUI 프레임 워크와 약간 다르므로 학습 곡선이 조금 가파르다. 그러나 일단 당신이 그것으로 들어가면 그것은 멋진 장소입니다!

2

실제로 옳은 길을 걷고 있습니다.

나는 this article on M-V-VM을 읽는 것이 좋습니다.

+0

멋진 기사, 감사합니다! – 80bower

관련 문제