데이터 형식을 사용하는 목록 상자가 있습니다. 내가 필요한 것은 항목을 선택한 후에하는 방법입니다. 내부의 목록 항목이 아닌 목록 상자 자체를 축소하려고합니다. selector.selected 및 unselected에 대해 eventtrigger를 시도했지만 실행하지 않습니다. datatemplate에 datatrigger를 넣었지만 여기에서 목록 상자에 액세스 할 수 없습니다. 어떤 아이디어?항목 선택시 목록 상자 축소
1
A
답변
1
이것은 약간 간접적 인 해결책이지만, ListBox 자체에 DataTrigger를 넣고 SelectedItems.Count에 바인딩하여 처리 할 수 있습니다. ListBox의 기본값을 "더 작은"모양으로 지정해야합니다. 그런 다음 트리거는 SelectedItems.Count가 0인지 확인하고, 그렇다면 ListBox를 으로 만들어야합니다.. 다음 예제에서는 간단히 ListBox.Background를 설정했지만 LayoutTransform 또는 RenderTransform 또는 Width/Height 또는 ListBox를 "축소"하는 데 사용하도록이 컨트롤을 적용 할 수 있어야합니다.
<ListBox.Style>
<Style TargetType="ListBox">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedItems.Count, RelativeSource={RelativeSource Self}}" Value="0">
<Setter Property="Background" Value="Orange" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.Style>
분명히이 옵션을 선택하면 전체 ListBox가 축소됩니다 (또는 단순화 된 예제에서는 흰색으로 바뀝니다). 선택한 ListBoxItem을 전체 크기로 유지하려면 ListBox.ItemContainerStyle을 사용하십시오. 이 경우 IsSelected에서 트리거하고 적절한 축소기를 적용하여 '축소'변환을 되돌릴 수 있습니다. 음수 여백을 적용하거나 역 스케일 변환을 적용합니다. (A 일반 트리거는이를 위해 할 것입니다.) 모든
0
첫째, 올바른 이벤트 둘째, 당신은 창 수준에서 Storyboard
를 사용할 수 SelectionChanged
하지 Selected
되는 후크하려면 다음 Storyboard
:
를<Storyboard x:Key="Storyboard1">
<DoubleAnimationUsingKeyFrames
BeginTime="00:00:00"
Storyboard.TargetName="grid"
Storyboard.TargetProperty="(FrameworkElement.Height)">
<SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
윈도우 트리거 :
<Window.Triggers>
<EventTrigger RoutedEvent="Selector.SelectionChanged" SourceName="listBox">
<BeginStoryboard Storyboard="{StaticResource Storyboard1}"/>
</EventTrigger>
</Window.Triggers>
그리고 약간의 용 장식과 ListBox
(효과를 위해 ons) :
<Border
BorderThickness="2"
CornerRadius="3"
BorderBrush="#FF000000"
Padding="3"
VerticalAlignment="Top">
<Grid Height="200" x:Name="grid">
<ListBox x:Name="listBox" Height="200">
<ListBoxItem Content="ListBoxItem"/>
<ListBoxItem Content="ListBoxItem"/>
<ListBoxItem Content="ListBoxItem"/>
<ListBoxItem Content="ListBoxItem"/>
</ListBox>
</Grid>
</Border>
관련 문제
- 1. 목록 상자 항목 오버플로
- 2. 목록 상자 항목 동적로드
- 3. WPF - 목록 상자 항목 숨기기
- 4. 항목 추가 중 목록 상자 항목 고정
- 5. 목록 상자 항목 값 업데이트
- 6. 목록 상자 선택 항목 확장
- 7. C# 목록 상자 항목 선택
- 8. 목록 상자 itemtemplate 선택한 항목
- 9. 목록 상자 항목 선택 유지
- 10. WPF 목록 상자 스크롤 후 오른쪽 클릭시 목록 상자 항목
- 11. 드롭 다운 목록 항목 선택시 이미지를 변경하는 방법
- 12. Silverlight : 목록 상자 템플릿 업데이트 항목
- 13. 목록 상자 내에서보기 항목 가져 오기
- 14. wrappanel 내의 Silverlight 스케일링 목록 상자 항목
- 15. 목록 상자 (System.Web.UI.WebControls)의 선택된 항목 표시
- 16. C# 목록 상자 세트 선택된 항목
- 17. 항목 표시 방식 변경 WPF 목록 상자
- 18. Winform 사용자 지정 목록 상자 항목
- 19. 델파이 목록 상자 항목 이름, 아니 자막
- 20. WPF : 목록 상자, 선택된 항목 가운데 맞추기
- 21. 목록 상자 Windows Phone 7의 선택된 항목
- 22. delphi 및 목록 상자 항목 표시
- 23. 목록 상자 안에 체크 박스 항목 추가
- 24. 목록 상자 제어 항목 (우) 여러 이름?
- 25. WP7 목록 상자 - 선택한 항목 지우기
- 26. Vb.net - 문자열을 기준으로 목록 상자 항목 선택
- 27. selectedindex에서 목록 상자 다중 항목 선택이 변경됩니까?
- 28. wp7 목록 상자 수신 거부 - 목록 하단의 항목
- 29. C# Silverlight - 가로 목록 상자로 확대/축소 이미지 항목
- 30. asp.net의 목록 상자 컨트롤