2010-06-14 2 views
1

나는 항목 모음이 있습니다. DataTemplate을 사용하여 WPF ListBox에 항목을 표시합니다. DataTemplate의 일부는 크기를 조정하고 항목을 시각적으로 구분하는 데 사용되는 Thumb입니다. Thumb.Visibility은 항목의 속성에 바인딩됩니다 (예 : 마지막 항목에는 보이지 않는 Thumb이 없습니다).목록 상자 항목 선택에 Thumb을 포함하지 않는 방법

ListBox의 항목을 선택하면 ListBoxItem의 일부이므로 Thumb도 선택해야하는 문제가 있습니다. 원하는 동작은 Thumb이없는 데이터 만 선택하는 것입니다.
이 동작을 어떻게 얻을 수 있습니까? ListBox 코드로 항목을 추가하거나 Thumb의 가시성을 수동으로 처리하고 싶지 않습니다. 현재이 모든 것을 DataTemplate에서 얻습니다.

답변

0

DataTemplate이 아닌 내부 항목 컨테이너 스타일을 사용하십시오. 나는. 자신의 ListBoxItem 스타일을 정의하고 필요한 부분 만 강조 표시하십시오. 예컨대 : 다음

<Style x:Key="MyStyle" TargetType="{x:Type ListBoxItem}"> 
    <Setter Property="SnapsToDevicePixels" Value="true"/> 
    <Setter Property="OverridesDefaultStyle" Value="true"/> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type ListBoxItem}"> 
     <Grid> 
     <Border 
      Name="Border" 
      Margin="0, 0, 0, 1" 
      Padding="2" 
      SnapsToDevicePixels="true"> 
      <ContentPresenter /> 
     </Border> 
     <Border Grid.Row="1" BorderThickness="0, 0, 0, 1" BorderBrush="Black" 
       SnapsToDevicePixels="True"/> 
     </Grid> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsSelected" Value="true"> 
      <Setter TargetName="Border" Property="Background" Value="#DDDDDD"/> 
      </Trigger> 
      <Trigger Property="IsEnabled" Value="false"> 
      <Setter Property="Foreground" Value="#888888"/> 
      </Trigger> 
     </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

그리고 :

<ListBox ItemContainerStyle="{StaticResource MyStyle}"> 
관련 문제