sourcecode

목록에 없는 값에 바인딩된 편집 가능한 ComboBox

codebag 2023. 4. 28. 20:34
반응형

목록에 없는 값에 바인딩된 편집 가능한 ComboBox

편집 가능한 콤보 상자가 있는데, 여기서 기본 설정 항목이 항상 드롭다운 목록에 있는 것은 아닙니다.

텍스트 상자에 텍스트를 수동으로 입력하여 SelectedValue에 바인딩된 문자열로 전달할 수 있으면 좋겠습니다.

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

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

어제와 오늘 이 작업을 수행했는데 다음과 같습니다.

  1. 콤보 상자 설정IsEditable="true"

  2. 에 구속하는 대신에SelectedItem에 묶다.Text콤보 상자의 속성

  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}" />

결합을 콤보의 텍스트 속성으로 설정하는 것으로도 충분합니다.

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

언급URL : https://stackoverflow.com/questions/3743269/editable-combobox-with-binding-to-value-not-in-list

반응형