[.net] 목록에없는 값에 바인딩하는 편집 가능한 ComboBox

드롭 다운 목록에 항상 선호하는 항목이있는 것은 아니지만 편집 가능한 콤보 상자가 있습니다.

SelectedValue에 바인딩 된 문자열에 전파되는 텍스트 상자에 텍스트를 수동으로 입력 할 가능성을 갖고 싶습니다.

현재 SelectedValue에 바인딩 된 문자열은 입력 된 값이 ComboBox 항목에있는 경우에만 업데이트됩니다.

ComboBox 목록에서 사용할 수없는 사용자 지정 값을 수동으로 입력하고 바인딩 된 값에 올바르게 전파하려면 어떻게해야합니까?



답변

나는 어제와 오늘 이것을하고 있었고 다음과 같이 보입니다.

  1. 콤보 박스 설정 IsEditable="true"

  2. 에 바인딩하는 대신 콤보 상자 SelectedItemText속성에 바인딩

  3. 문자열 대신 사용자 지정 개체에 바인딩하는 경우 TextSearch.TextPath="NameOfField". 이렇게하면 텍스트 검색 동작이 작동하고 텍스트 상자에도이 속성이 표시됩니다.

대체로 다음과 같은 결과를 얻었습니다.

<ComboBox x:Name="c"
          IsEditable="True"
          IsTextSearchEnabled="True"
          IsTextSearchCaseSensitive="False"
          StaysOpenOnEdit="True"
          Text="{Binding NameOnViewModel}"
          TextSearch.TextPath="NameOnChildItems"
          ItemsSource="{Binding Items}"
          ItemTemplate="{StaticResource DataTemplate}" />

<TextBlock Text="{Binding ElementName=c,Path=Text}" />


답변

Combo의 Text 속성에 바인딩을 설정하는 것으로도 충분합니다.

<ComboBox  IsTextSearchEnabled="True"    IsEditable="True"
ItemsSource="{Binding Items}" Text="{Binding SelectedItemText, Mode=TwoWay}" />


답변