wpf iseditable = 객체로 채워진 true combobox는 tostring ()을 선택한 항목으로 표시합니다.

StackOverflow https://stackoverflow.com/questions/1844156

문제

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 링크의 예제 코드를 참조하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top