인덱스를 통해 항목 속성에 액세스하여 WPF ComboBox의 첫 x 항목을 제외한 모든 항목을 비활성화하는 방법이 있습니까?콤보 박스 항목을 비활성화하는 방법?
편집 :
ComboBoxItem DiffieHellmanItem = (ComboBoxItem)comboboxName.ItemContainerGenerator.ContainerFromIndex(i));
내가 콤보 상자의 항목을 비활성화 실제로 방법을 알고하지 않습니다
인덱스를 통해 항목 속성에 액세스하여 WPF ComboBox의 첫 x 항목을 제외한 모든 항목을 비활성화하는 방법이 있습니까?콤보 박스 항목을 비활성화하는 방법?
편집 :
ComboBoxItem DiffieHellmanItem = (ComboBoxItem)comboboxName.ItemContainerGenerator.ContainerFromIndex(i));
내가 콤보 상자의 항목을 비활성화 실제로 방법을 알고하지 않습니다
편집 : ComboBoxItems를 사용하는 방법을 찾은 것 같습니다. 또한 ItemContainerStyle을보고 (사용할 수있는 데이터 바인딩이 있는지 확인하십시오 (항목에 Enabled 속성이 있거나 유사한 항목이있는 경우).
그러나 데이터 바인딩을 수행하는 방법에 따라 DataTemplates를 사용하여 다른 "브러시", "불투명도"등에서 "비활성화"항목을 표시 할 수 있습니다. Bea Stollnitz는 그 약 here에 관한 좋은 게시물을 가지고 있습니다.
UX 관점에서 고려해야 할 사항 중 하나는 숨겨진 것과 달리 사용할 수 없도록 설정하려는 이유입니다. 사용자가 클릭 할 수없는 것들로 가득 찬 ComboBox를 갖지 않도록 활용할 수있는 점진적 공개 전략이 있습니까?
을 작동하지만, 당신이 있는지 확인 할 당신의 OnClick 이벤트에 로직을 추가 할 수 있어야 선택한 항목의 색인은> = x이며이를 기반으로 요청 된 모든 작업을 허용하지 않습니다.
콤보 상자에서 ItemContainerStyle을 설정할 수 있습니다. 블렌드에서 - 현재의 복사본을 만들어이 템플릿을 가져옵니다. 템플릿에서 IsEnabled 속성을 Setter로 설정하고 바인딩 할 값에 바인딩 할 수 있습니다.
<Style x:Key="ComboBoxItemStyle1" TargetType="{x:Type ComboBoxItem}">
...
<Setter Property="IsEnabled" Value="{Binding Active}"/>
...
</Style>
이럴 가장 좋은 방법은 나뿐만 아니라 그들을 숨길 수
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Style.Triggers>
<DataTrigger *insert condition*>
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.ItemContainerStyle>
잘 DataTriggers을 사용하는 것입니다. 문제는 오히려 ComboBoxItems를 반복하거나 색인을 통해 액세스하는 방법을 찾지 못했기 때문입니다. –
새로운 것을 매일 배우십시오. DataBinding과 컨테이너 생성을 활용하여 코드 숨김 외부에서이를 수행하는 방법이 되었습니까? – micahtan