WPF 콤보 상자 DisplayMemberPath
좋아, 나는 다른 질문을 보았고 내 대답을 얻지 못한 것 같아서 여기 누군가가 할 수 있기를 바랍니다.
DisplayMemberPath 속성이 항목에 바인딩되지 않는 이유는 매우 간단한 질문입니까?
<ComboBox Grid.Row="1" Grid.Column="2" ItemsSource="{Binding PromptList}" DisplayMemberPath="{Binding Name}" SelectedItem="{Binding Prompt}"/>
추적 출력은 IEnumerable의 실제 항목이 아닌 IEnumerable을 보유하는 클래스에 바인딩을 시도하고 있음을 보여줍니다. xaml에 한 줄을 추가하지 않고 콤보 상자를 채우는 간단한 방법에 대해 혼란 스럽습니다.
단순히 itemssource의 개체에 대해 ToString ()을 호출합니다. 다음과 같은 해결 방법이 있습니다.
<ComboBox Grid.Row="1" Grid.Column="2" ItemsSource="{Binding PromptList}" SelectedItem="{Binding Prompt}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
그러나 제 생각에는 그렇게 간단한 작업에는 너무 많은 것입니다. 상대 소스 바인딩을 사용할 수 있습니까?
DisplayMemberPath
각 항목의 표시 문자열 속성에 대한 경로를 지정합니다. 귀하의 경우에는, 당신은으로 설정 것 "Name"
,하지 "{Binding Name}"
.
클래스의 데이터에 바인딩하는 것이 아니라 멤버 "name"으로 명명 된 클래스 멤버에서 데이터를 가져 오도록 지시하는 것이므로 인스턴스에있는 경우 item.Name == "steve"
에서 데이터를 가져 오려고합니다 item.steve
.
이 작업을 수행하려면 MemberPath에서 바인딩을 제거해야합니다. 이를 변경 MemberPath = "Name"
하면 멤버 "Name"에서 데이터를 가져 오도록 지시합니다. 그렇게하면 전화 item.Name
가 아니라 전화를 겁니다 item.steve
.
DisplayMemberPath를 제거한 다음 TextBlock에서 경로를 설정할 수 있습니다.
DisplayMemberPath는 실제로 ItemTemplate이 없을 때 사용됩니다.
또는 ItemTemplate을 제거하고 DisplayMemberPath를 사용할 수 있습니다.이 경우 기본적으로 TextBlock이 생성됩니다. 두 가지 모두 권장하지 않습니다.
<TextBlock text="{Binding Path=Name, Mode=OneWay}"
당신은 변경해야합니다 MemberPath="{Binding Name}"
에를 MemberPath="Name"
. 그러면 작동합니다.
또는 DisplayMemberPath를 설정할 필요가 없습니다. PromptList에있는 개체에 ToString () 재정의를 포함 할 수 있습니다. 이렇게 :
class Prompt {
public string Name = "";
public string Value = "";
public override string ToString() {
return Name;
}
}
ToString ()이 자동으로 호출되어 클래스의 Name 매개 변수를 표시합니다. 이것은 ComboBoxes, ListBoxes 등에서 작동합니다.
참고 URL : https://stackoverflow.com/questions/1460612/wpf-combobox-displaymemberpath
'code' 카테고리의 다른 글
쿼리로 열을 삭제하지 않고 열의 데이터 유형을 변경하는 방법은 무엇입니까? (0) | 2020.12.14 |
---|---|
쿼리 결과에서 임의의 결과 샘플 선택 (0) | 2020.12.14 |
PHP는 오류 13으로 mysql에 연결할 수 없습니다 (하지만 명령 줄은 가능합니다) (0) | 2020.12.14 |
수직 스크롤바 숨기기 (0) | 2020.12.14 |
Eclipse 유효성 검사 오류 "문서에 대한 문법 제약이 감지되지 않음"을 수정하는 방법은 무엇입니까? (0) | 2020.12.14 |