WPF의 콤보 박스 내에 누가 체크 박스를 구현합니까?ComboBox 내의 체크 상자 WPF
답변
예, 가능합니다. 나는 본질적으로 동일한 컨트롤 인 ListView와 비슷한 것을했다. 여기서 트릭을 만드는 것은 FAST입니다. 수천 개의 항목이있는 경우 30 초 정도 걸릴 수 없습니다.
이제 구현 방법은 일반 컨트롤을 만들거나이 개체 유형에 맞게 만들 것인지에 따라 달라집니다. 그 이유는이 작업을 빠르게 수행하기 위해서는 항목 개체의 어떤 속성이 IsChecked인지 알아야하기 때문입니다. 필자는 IsCheckedPath라는 DP를 WPF라는 정신으로 만들었습니다. 그런 다음 컨트롤은 각 개체의 IsCheckedPath 속성을 해당 확인란에 자동 바인딩합니다.
마스터 체크 박스를 토글하면 항목을 반복하고 속성 값을 설정해야합니다. 당신은 2 가지 선택을 할 수 있습니다 : 1) 반사 또는 2) IsCheckedPath DP를 설정할 때 표현 트리를 컴파일하십시오.
리플렉션이 너무 느려서 # 2를 했었습니다.
이 특정 개체에만 관심이 있고 컨트롤을 다시 사용할 수 있다고 생각하지 않는다면 둘 다 건너 뛰고 속성을 설정하면됩니다. IMO가 아니라 일반적인 경로를 선택하는 것이 좋습니다.
또한 WPF 컨트롤 가상화 및 체크 상자가 밖으로 스크롤 된 항목에 대해 "활성"이 아니기 때문에 시각적으로 "바로 가기"를 가져와 다른 쪽에서 확인란을 설정할 수 없습니다 전망.
안녕하세요. WPF에 오신 것을 환영합니다! 이 상황에서 찾으시는 내용은 MultiBinding입니다. 마스터 체크 박스는 개별 체크 박스를 변경할 수 있기 때문에 바인딩은 양방향이어야합니다. MultiBinding는 다음과 같이 마스터 확인란에 적용 할 것입니다 :
<Checkbox x:Name="MasterCheckBox">
<Checkbox.IsChecked>
<MultiBinding Converter="[Instance of your converter class]" Mode="TwoWay">
<Binding Source="ConversationViewModel.ConversationValues" Convert="{StaticResource PersonFilterTypeToBoolConverter}" ConverterParameter="{x:Static shared:MethodType.Mobile}"/>
<Binding Source="ConversationViewModel.ConversationValues" Convert="{StaticResource PersonFilterTypeToBoolConverter}" ConverterParameter="{x:Static shared:MethodType.Skype}"/>
<Binding Source="ConversationViewModel.ConversationValues" Convert="{StaticResource PersonFilterTypeToBoolConverter}" ConverterParameter="{x:Static shared:MethodType.Landline}"/>
</MultiBinding>
</Checkbox.IsChecked>
또한 변환기를 만들어야합니다. 위에 링크 된 기사는 간단한 변환기를 만드는 방법을 설명합니다. 귀하의 경우에는 바인딩이 양방향이므로 변환 및 ConvertBack 메서드를 모두 처리해야합니다. ConvertBack 메서드는 사용자가 마스터 확인란을 변경할 때 실행되므로 멀티 바인딩 아래의 모든 바인딩을 true 또는 false로 설정해야합니다. Convert 메서드는 개별 확인란 중 하나가 변경되면 실행됩니다. 이 경우 WPF에서는 모든 개별 상자가 선택되어 있으면 마스터 확인란의 IsChecked를 true로 설정하고, 모든 개별 상자가 선택되어 있지 않으면 false로 설정하고 혼합되어 있으면 IsChecked가 null이어야합니다. 해당 속성의 유형이 bool이므로 IsChecked는 null 일 수 있습니까? (nullable bool)은 WPF에서 3 상태 체크 박스가 작동하는 방식입니다.
- 1. WPF : ComboBox 내의 TreeView
- 2. 목록보기 내의 WPF 콤보 상자
- 3. 체크 박스가 포함 된 WPF ComboBox 찾기
- 4. 목록 상자 내부의 체크 상자 WPF
- 5. XP에서 WPF Combobox 렌더링
- 6. CheckBox가있는 MVVM WPF ComboBox
- 7. C# WPF - ComboBox
- 8. 다중 선택 ComboBox, WPF
- 9. WPF ComboBox Style Missing
- 10. WPF ComboBox IsSynchronised 기본값
- 11. WPF multiple combobox communication
- 12. tabcontrol 내의 WPF MVVM 바인딩 목록 상자
- 13. RadGrid 내의 ComboBox
- 14. DataGrid 내의 Combobox 선택
- 15. ComboBox 내의 DataGrid
- 16. WPF DataGrid Combobox selectedItem
- 17. WPF Combobox SelectionChanged 이벤트
- 18. 체크 박스가 포함 된 Wpf 콤보 상자
- 19. 체크 박스가있는 WPF 목록 상자 - 선택 표시
- 20. WPF 체크 상자 컨트롤 토글 이벤트가 있습니까?
- 21. WPF 편집 가능한 ComboBox 스타일링
- 22. ComboBox 내의 다중 선택 항목을 사용하여 저장할 수 없습니다. WPF
- 23. 조건 체크 comboBox
- 24. WPF Combobox SelectionChanged 레코드 바인딩
- 25. wpf 콤보 상자 기본값
- 26. ComboBox IsEditable 동작 질문 WPF
- 27. WPF 콤보 상자 - 태그
- 28. WPF DataGrid ComboBox 필드로 정렬
- 29. WPF XAML ComboBox 너비
- 30. WPF Combobox 바인딩 질문
이것은 내 문제를 해결하지 못했지만 IValueConverter로 좁혔지만 지금부터 IValueConverter를 추가하는 방법을 잘 모르겠습니다. –