2011-03-31 3 views
1

이 사이트에서 다른 예제를 사용하여 목록 상자/확인란 콤보를 선택하면 기본 회색에서 다른 색을 선택하여 사용할 수 없습니다.wpf 목록 상자 확인란을 선택하거나 선택하면 색이 바뀝니다.

내가 마지막으로 시도한 것은 항목을 선택하면 배경이 흰색으로 표시되고 선택하지 않으면 회색으로 표시됩니다.

여기에 내가 가지고있는 것이고 어떤 도움을 주시면 감사하겠습니다.

리소스를 아래의 설명으로 업데이트하십시오.

컨트롤이 응답으로 업데이트되었지만 여전히 작동하지 않습니다. 어떤 아이디어입니까?

<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
      ItemsSource="{Binding}" 
      Name="lstSwimLane" SelectionMode="Multiple" 
      Width="auto" 
      Height="auto" 
      Background="Transparent" 
      BorderThickness="0" 
      SelectionChanged="LstSwimLaneSelectionChanged"> 

    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapPanel IsItemsHost="True" /> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 

    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="IsSelected" Value="{Binding Path=IsChecked, Mode=TwoWay}" /> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="ListBoxItem"> 
         <Border x:Name="Border" SnapsToDevicePixels="true"> 
          <ContentPresenter /> 
         </Border> 

         <ControlTemplate.Triggers> 
          <Trigger Property="IsSelected" Value="True"> 
           <Setter TargetName="Border" Property="Background" Value="{StaticResource SelectedBrush}"/> 
          </Trigger> 
          <Trigger Property="IsSelected" Value="False"> 
           <Setter TargetName="Border" Property="Background" Value="{StaticResource UnselectedBrush}"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ListBox.ItemContainerStyle> 

    <ListBox.ItemTemplate>          
     <DataTemplate> 
      <StackPanel Orientation="Horizontal" Margin="3,3,3,3"> 
       <CheckBox IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" 
           Checked="ChkFilterChecked" 
           Unchecked="ChkFilterUnchecked" 
           VerticalAlignment="Center" 
           Margin="0,0,4,0" /> 
       <TextBlock Text="{Binding Value}" VerticalAlignment="Center" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

참고 : 체크 표시된 체크 박스와 목록 항목의 조합은 여전히 ​​회색이며 선택하지 않은 항목은 흰색입니다.

다음은 회신 내용과 일치하는 것으로 보이는 스크린 샷이 첨부되어 있습니다. 나는 곤두박질 친다.

screen shot

여기 화상 커보기 위해 직접 연결된다.
http://s1120.photobucket.com/albums/l489/nitefrog/?action=view&current=jw_0012011-03-311325.jpg

다음은 체크 박스의 스크린 샷입니다. 그들이 실행되지 않는 어떤 이유로 브러쉬가 설정되어 있지만

http://i1120.photobucket.com/albums/l489/nitefrog/jw_0022011-03-311345.jpg

enter image description here

.

enter image description here

어떤 아이디어가?

감사합니다.

답변

3

예제에서는 myListboxStyle 스타일을 사용하지 않으므로 제거 할 수 있습니다. 그러나 ItemContainerStyle 속성을 변경 :

 <ListBox.ItemContainerStyle> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="IsSelected" Value="{Binding Path=IsChecked, Mode=TwoWay}" /> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="ListBoxItem"> 
          <Border x:Name="Border" SnapsToDevicePixels="true"> 
           <ContentPresenter /> 
          </Border> 

          <ControlTemplate.Triggers> 
           <Trigger Property="IsSelected" Value="True"> 
            <Setter TargetName="Border" Property="Background" Value="{StaticResource SelectedBrush}"/> 
           </Trigger> 
           <Trigger Property="IsSelected" Value="False"> 
            <Setter TargetName="Border" Property="Background" Value="{StaticResource UnselectedBrush}"/> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </ListBox.ItemContainerStyle> 

그것은 매우 간단한 템플릿이며 두 트리거가 있습니다 IsSelected=TrueIsSelected=False을. 그리고이 예는 Resources 컬렉션에 다음 브러시를 추가 완료 :

<SolidColorBrush x:Key="SelectedBrush" Color="White"/> 
    <SolidColorBrush x:Key="UnselectedBrush" Color="Gray"/> 

ListViewItem에 대한 표준 스타일을 편집하는 것이 더 것이지만, 내가 인터넷에서 찾을 수없는 나는이 없습니다 Expression Blend가 출시되었습니다. 결과의

화면 : enter image description here

+0

이 작동하지 않습니다. 선택한 모든 것은 여전히 ​​회색이며 선택되지 않은 모든 것은 흰색입니다. 위의 코드를 잘라내어 붙여 넣습니다. – nitefrog

+0

@nitefrog 현재 코드를 위의 스크린 샷과 비교하십시오. 내 응용 프로그램에서 검사 상태는 흰색, 검사되지 않은 회색, 필요한 모든 것입니다. – vorrtex

+0

@nitefrog 이상하게 들리지만 질문의 코드는 회색과 체크되지 않은 흰색과 같은 결과를냅니다.문제는 아마도'Resources' 요소의 두 브러시에 있습니다. – vorrtex