드롭 다운 목록에 항상 선호하는 항목이있는 것은 아니지만 편집 가능한 콤보 상자가 있습니다.
SelectedValue에 바인딩 된 문자열에 전파되는 텍스트 상자에 텍스트를 수동으로 입력 할 가능성을 갖고 싶습니다.
현재 SelectedValue에 바인딩 된 문자열은 입력 된 값이 ComboBox 항목에있는 경우에만 업데이트됩니다.
ComboBox 목록에서 사용할 수없는 사용자 지정 값을 수동으로 입력하고 바인딩 된 값에 올바르게 전파하려면 어떻게해야합니까?
답변
나는 어제와 오늘 이것을하고 있었고 다음과 같이 보입니다.
-
콤보 박스 설정
IsEditable="true"
-
에 바인딩하는 대신 콤보 상자
SelectedItem
의Text
속성에 바인딩 -
문자열 대신 사용자 지정 개체에 바인딩하는 경우
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}" />