2012-06-28 3 views
0

WPF 및 바인딩 물건을 처음 사용합니다. 내 문제에 대한 해결책을 찾으려고했지만 여전히 누락 된 항목/ UserControl에있는 TextBox에서 데이터를 가져 와서 작동하는 방식으로 주 창에있는 속성에 넣고 싶습니다. 다른되지/WPF 사용자 정의 바인딩 데이터 얻기

나는 간단한 클래스

public class User 
{ 
    public string Name {get; set;} 
    public string Age {get; set;} 
} 

및 간단한 사용자 제어를

<TextBox Text="{Bind Name}" /> 
<TextBox Text="{Bind Age}" /> 

된 UserDetails UC는 다음과 같이 메인 화면에 배치 된 두 개의 TextBoxs 호출 된 UserDetails 있습니다

<uc:UserDetails DataContext="{Binding User, Mode=TwoWay}" /> 

및 MainWindow를 뷰 모델에은 또한 클릭에 UserDetials UC의 데이터로 사용자 특성을 작성해야합니다 버튼이 MainWindow를의 속성

public User User { get; set;} 

있습니다. 지금은 꽤 늦었고 아침에 끝내야 할 필요가 있기 때문에 어떤 해결책이라도 인정 될 것입니다.

아이디어가 있습니까? 위의 예는 매우 간단하지만, 어떻게 할 수 있는지를 보여줄 수 있다면, 내 문제의 나머지 부분을 처리 할 수 ​​있습니다.

+0

스크린 샷을 표시 할 수 있습니까? 이런 식으로 바인딩하는 경우 UserControl에서 세부 정보가있는 '사용자'를 채우기 위해 단추를 클릭 할 필요가 없습니다. UserControl에 직접 바인딩해야합니다. 텍스트 상자의 텍스트를 변경하면 User 속성이 즉시 변경됩니다. – Charleh

+0

User 속성에서 데이터를 가져와 DB에 저장하려면 버튼이 필요합니다. 하지만 항상 두 TextBox를 채우고 버튼을 클릭하면 User 속성이 Null입니다. 위의 예보다 애플리케이션이 훨씬 복잡하기 때문에 스크린 샷을 게시하기가 어렵지만 문제는 동일합니다. – suleks

+0

@suleks이 코드는 무료 코드 공장이 아니며 숙제를 완료하고 아침에 필요할 필요가 있기 때문에 문제가 있다고 판단하고 SO의 우수한 사용자가 전체 코드 솔루션으로 응답 할 것으로 기대할 수 있습니다. 우리는 종종 코드 예제 또는 유용한 링크로 도움을 제공 할 것이지만, 그런 종류의 요청은 SO 사용자에게 잘못된 길을 남깁니다. – evanb

답변

1

여기에 몇 가지 시도하고 있습니다

  • 당신이 MainWindow를의 DataContext에에보기 모델을 설정하고 확인합니다. 뷰 모델에 별도의 클래스를 사용하지 않고 코드 숨김 만 사용하는 경우에도 DataContext를 할당해야합니다.
  • 오타 일 수도 있지만 텍스트 상자에 {Binding Path=Name, Mode=TwoWay}이어야하며 연령대가 같을 때 {Bind Name}으로 작성했습니다. 바인딩 모드를 속성에서 두 가지 방법으로 설정해야합니다. 예를 들어 클래스에 바인딩 모드를 설정하지 않아도됩니다.
0

INotifyPropertyChanged 인터페이스를 구현하고 속성 설정자에서 PropertyChanged 이벤트를 발생시켜야합니다. MainViewModelUser 클래스의 경우이 작업을 수행해야합니다. 어떻게 완료되었는지는 example입니다.