2012-08-08 3 views
0

ComboBox 컨트롤에 사용자 정의 동작이 첨부되어 있습니다.선택하지 않고 ComboBox의 첫 번째 항목 강조 표시

기본적으로 증분 검색을 구현하는 ComboBox의 첫 번째 항목을 강조 표시하려고합니다. 첫 번째 항목을 강조 표시해야하지만 선택하지 말아야한다는 순간 결과가 팝업에 표시됩니다.

즉, SelectedIndex = 0은 항목을 선택하므로 사용할 수 없습니다. ComboBox를 비워 두지 만 강조 표시된 항목의 시각적 상태를 설정하려고합니다.

IsHighlightedPropertyComboBoxItem에 있지만 읽기 전용 dp로 등록되어 있으므로 도움이되지 않습니다.

어쨌든 내가 할 수 있습니까?

+0

강조 표시에 대해 더 명확하게 나타낼 수 있습니까? 우리는 [강조 표시 [v]]하거나 콤보를 비워 두지 만 첫 번째 항목의 색을 강조 표시되도록 변경합니까? –

+0

확실하게, 나는 콤보 상자를 비워두기를 원하지만 첫 번째 항목의 색을 강조 표시되도록 변경하십시오 .. – gaurawerma

답변

0

항목의 목록은 ItemsControl의 일종해야한다 (즉 ComboBox, ListBox, ListView, TreeView 등) 맞죠?

그래서 그것의 ItemTemplate 속성을 가지고 있어야합니다 ...

그래서 그 ItemTemplateMultiBinding 2 특성을 갖는됩니다 DataTrigger을 추가 ...

  1. 현재 데이터 컨텍스트 목록 항목의 ... {Binding}
  2. 목록의 ItemsSource ... {Binding ItemsSource, RelativeSource={RelativeSource AncetsrType={x:Type ItemsControl}}}

MultiBinding.Converter이 돌아갑니다 경우는 true

에서이 플래그에 따라 다음
values[0] == ((IEnumerable)values[1]).Cast<object>().First() 

DataTrigger 당신이 목록의 첫 번째 항목에 원하는 스타일을 적용 할 수 있습니다!

희망이 도움이됩니다.

+0

스타일을 설정하고 싶지는 않지만 comboboxitem을 강조 표시하도록 설정하고 강조하기 위해 기존 스타일을 사용해야합니다. – gaurawerma

1

변환기를 사용하는 대신 ComboBox의 AlternationIndex 속성을 사용하여 항목에 대한 색인을 얻은 다음 트리거를 사용하여 첫 번째 항목 만 색칠 할 수도 있습니다. 하나의 항목 만이 될 항목을 강조 0 스타일의 인덱스를 가질 수 있도록 항상 콤보 상자의 항목 수보다 큰 무언가에 교대 인덱스를 설정 뭔가 같은 :

<Style x:Key="FirstColor" TargetType="{x:Type ListBoxItem}"> 
     <Style.Triggers> 
      <Trigger Property="ComboBox.AlternationIndex" Value="0"> 
       <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
      </Trigger> 
     </Style.Triggers>    
    </Style> 

그리고 당신의 콤보 상자는 다음과 같이 표시됩니다

<ComboBox ItemsSource="{Binding Items}" SelectedIndex="-1" 
      AlternationCount="500" 
      ItemContainerStyle="{StaticResource FirstColor}"/> 

HighlightBrushKey은 사용자 정의 색상보다는 기존 강조 스타일을 사용합니다.

+0

행동에서이 작업을 수행해야합니다. 기존 컨트롤을 수정하고 싶지 않습니다. – gaurawerma

관련 문제