사용자의 이름을 입력하기 위해 textName을 사용합니다. 그런 다음 입력하면 textchanged 이벤트는 입력란과 일치하는 이름으로 목록 상자를 업데이트 한 다음 사용자가 항목 (목록 상자의 CompletedName)을 클릭 할 수 있으며 항목 내용이있는 텍스트 상자 업데이트가 필요한 경우 발생합니다.이 문제는 시작되었습니다. "CompletedName"에 대한 "GivenName"(쿼리 대상 테이블의 필드)을 변경했을 때 발생합니다. 위의 쿼리에서 문자열 concat입니다.두 개의 onewaytosource 문제 목록 상자에 텍스트 상자 바인딩?
이 LINQ 쿼리가 있습니다. 그런 다음
var players =
from p in context.Player
where (p.GivenName.StartsWith(TextName.Text.Trim()) || p.Number.StartsWith(TextName.Text) || p.Surname.StartsWith(TextName.Text))
select new { CompleteName = p.GivenName + " " + p.Surname + " (" + p.Number + ")"};
나는이 목록 상자라는 이름의 listNames의 소스하고 나는이 텍스트 상자가 :
<TextBox Name="TextName" Text="{Binding ElementName=listNames, Path=SelectedItem.CompleteName}"/>
를 내가 그것을 실행하면
는 다음 오류가 표시됩니다 :
"A 양방향 또는 OneWayToSource 읽기 전용 속성 유형의 'CompleteName' '<> f__AnonymousType0`1 [선택 System.String]'에서 작동하지 않을 수 있습니다 바인딩"물론 TwoWay 또는 OneWayToSource가 될 수 없다는 것을 이해합니다. 그러나 사용자가 목록 상자에서 SelectedItem을 업데이트하지 않고 검색 텍스트 상자이기 때문에 textName에 내용을 추가 할 수 있어야합니다.
Mode = OneWay라는 표현식을 텍스트 상자에 추가하면 textName 컨트롤에서 아무런 변화가 없습니다. 목록 상자의 항목을 표시하지 않습니다. 어떻게 작동합니까?
의 OnlyRead 원이었다 Anonimous 유형을 사용하는이 방법을 사용하면 XAML –