wpf iseditable = 객체로 채워진 true combobox는 tostring ()을 선택한 항목으로 표시합니다.
문제
WPF 콤보 박스를 사용하면 편집이 가능하며 모든 콤보 상자 항목이 문자열이거나 ToString () 메소드가 정의 된 경우 괜찮습니다.
항목을 선택하면 텍스트로 표시되며 DataTemplate을 사용하지 않으며 선택한 항목에서 toString ()을 호출합니다.
콤보 드롭 다운에서 항목 템플릿을 사용하여 포맷 된 항목 목록을 얻습니다. 선택할 때 객체의 이름을 얻습니다. mynamespace.myobjectname
일부 솔루션이있었습니다
- Valuepath를 사용하여 물체의 속성에 묶으십시오. 그러나 디스플레이가이 중 하나 이상이되도록 해야하는 경우 불운.
- 객체에서 toString () 메소드를 구현하십시오
주위에 또 다른 방법이 있습니까?
해결책
XAML 내에서 완전히 할 수 있습니다
<ComboBox IsTextSearchEnabled="True" IsEditable="True"
ItemsSource="{Binding MyObjectCollection}"
TextSearch.TextPath="MyObjectName">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding MyObjectName}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
거꾸로 코드-비만없이 XAML에서 원하는 것을 정의하고 변경할 수 있다는 것입니다. 항목 소스를 객체 모음에 바인딩 한 다음 검색을 텍스트 검색에 기반으로하는 경로를 설정합니다. 그런 다음 사용자 정의 ItemTemplate 내에서 TextBlock을 객체의 Tostring 메소드 외부의 다른 것에 바인딩 할 수 있습니다.
다른 팁
당신은 사용할 수 있습니다 ivalueconverter "객체"를 문자열 값으로 변환하고 뒤로 변환합니다. 자세한 내용은 IvalueConverter 링크의 예제 코드를 참조하십시오.
제휴하지 않습니다 StackOverflow