기본적인 아이디어는 사람 속성을 통해 이름과 나이를 연결하는 것입니다. Name의 setter에서 결과가 null이 아닌 경우 이름을 기반으로 사람을 검색 한 다음 Person에 할당합니다. Person의 설정자에서 Age를 설정하고 UI에 알립니다. 코드가 같다 : 위의 코드에서
private Person _selectedPerson;
public Person SelectedPerson
{
get { return _selectedPerson; }
set
{
if (value == null)
return;
_selectedPerson = value;
PersonAge = _selectedPerson.Age;
OnPropertyChanged("Person");
}
}
private string _personName;
public string PersonName
{
get { return _personName; }
set
{
_personName = value;
var person = Persons.FirstOrDefault(item => item.Name == _personName);
if (person != null)
SelectedPerson = person;
OnPropertyChanged("PersonName");
}
}
private int _personAge;
public int PersonAge
{
get { return _personAge; }
set
{
_personAge = value;
OnPropertyChanged("PersonAge");
}
}
, 사람은 당신이 목록 상자에 바인딩 목록입니다,으로 PersonName이 이름의 텍스트 상자에 바인딩, 인물이 시대의 텍스트 상자에 바인딩됩니다. 텍스트 상자 대신 텍스트 상자를 사용하기 때문에 여기 PersonAge를 쓰기 가능하게 유지합니다.
희망이 있습니다.
이 작은 예제에서는 3 층 아키텍처를 사용하고 있습니다 : 클래스 계층, 비즈니스 로직 계층 및 데이터 액세스 계층. 'var person = Persons.FirstOrDefault (item => item.Name == _personName);'을 사용하려고 할 때마다 암시 적으로 하나의 레이어를 다른 레이어로 변환하지 않는다는 오류가 표시됩니다. – Tico
코드가 없으므로 Person 유형과 UI에 바인딩 할 유형을 잘 모릅니다. 아마도 당신은 DataModel과 Dto 모두에 Person 객체를 가지고있을 것이고, 하나의 티어로 그것들을 섞을 것이다. –
여기 내 Person.cs는 다음과 같습니다. [Pastebin - Person.cs] (http://pastebin.com/xAQKKbvj) – Tico