treeviewitem (확장자)의 왼쪽에 확인란을 삽입하는 방법은 동일한 항목이었습니다.TreeView의 왼쪽에있는 WPF CheckBox
답변
TreeViewItem의 머리글을 수정하여 왼쪽에 확인란을 추가 할 수 있습니다. 다음은 빠른 시작 예제입니다.이 xaml은 왼쪽에 체크 박스를 추가하고 오른쪽에는 TextBlock을 추가합니다.
<TreeView>
<TreeViewItem>
<TreeViewItem.Header>
<WrapPanel>
<CheckBox />
<TextBlock
Margin='5,0'
Text='Item' />
</WrapPanel>
</TreeViewItem.Header>
<TreeViewItem>
<TreeViewItem.Header>
<WrapPanel>
<CheckBox />
<TextBlock
Margin='5,0'
Text='SubItem' />
</WrapPanel>
</TreeViewItem.Header>
</TreeViewItem>
</TreeViewItem>
</TreeView>
당신이 모든 TreeViewItems의 기본 모양을 무시할 완전히 새로운 템플릿을 만들려면 당신이 할 경우, 다음 MSDN TreeViewItem 컨트롤 템플릿의 예를 체크 아웃 할 수 있습니다 시나리오에 따라
Sergo, 여기에 제어 템플릿을 사용하는 버전이 있으며 항목의 열 0에 확인란이 있습니다. 오른쪽에있는 TreeViewItem을 사용하여 왼쪽에 정렬해야합니다. '마법'조각은 WrapPanel을 추가하고 Grid.Column = '0'에 배치하는 CheckboxTreeItem 스타일에 있습니다.
<Window
x:Class="TreeViewHeaderTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1"
Height="300"
Width="300">
<Window.Resources>
<SolidColorBrush
x:Key="GlyphBrush"
Color="#444" />
<Style
x:Key="ExpandCollapseToggleStyle"
TargetType="ToggleButton">
<Setter
Property="Focusable"
Value="False" />
<Setter
Property="Template">
<Setter.Value>
<ControlTemplate
TargetType="ToggleButton">
<WrapPanel
Background="Transparent">
<Path
x:Name="ExpandPath"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Margin="1,1,1,1"
Fill="{StaticResource GlyphBrush}"
Data="M 4 0 L 8 4 L 4 8 Z" />
</WrapPanel>
<ControlTemplate.Triggers>
<Trigger
Property="IsChecked"
Value="True">
<Setter
Property="Data"
TargetName="ExpandPath"
Value="M 0 4 L 8 4 L 4 8 Z" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style
x:Key="TreeViewItemFocusVisual">
<Setter
Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Border>
<Rectangle
Margin="0,0,0,0"
StrokeThickness="5"
Stroke="Black"
StrokeDashArray="1 2"
Opacity="0" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style
x:Key="CheckboxTreeItem"
TargetType="{x:Type TreeViewItem}">
<Setter
Property="IsExpanded"
Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter
Property="IsSelected"
Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter
Property="Background"
Value="Transparent" />
<Setter
Property="HorizontalContentAlignment"
Value="{Binding Path=HorizontalContentAlignment,
RelativeSource={RelativeSource
AncestorType={x:Type ItemsControl}}}" />
<Setter
Property="VerticalContentAlignment"
Value="{Binding Path=VerticalContentAlignment,
RelativeSource={RelativeSource
AncestorType={x:Type ItemsControl}}}" />
<Setter
Property="Padding"
Value="1,0,0,0" />
<Setter
Property="Foreground"
Value="{StaticResource {x:Static
SystemColors.ControlTextBrushKey}}" />
<Setter
Property="FocusVisualStyle"
Value="{StaticResource TreeViewItemFocusVisual}" />
<Setter
Property="Template">
<Setter.Value>
<ControlTemplate
TargetType="{x:Type TreeViewItem}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition
MinWidth="19"
Width="Auto" />
<ColumnDefinition
Width="Auto" />
<ColumnDefinition
Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition
Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<WrapPanel
Grid.Column='0'>
<CheckBox />
<ToggleButton
x:Name="Expander"
Style="{StaticResource
ExpandCollapseToggleStyle}"
IsChecked="{Binding Path=IsExpanded,
RelativeSource={RelativeSource
TemplatedParent}}"
ClickMode="Press" />
</WrapPanel>
<Border
Name="Bd"
Grid.Column="1"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding
BorderThickness}"
Padding="{TemplateBinding Padding}">
<ContentPresenter
x:Name="PART_Header"
ContentSource="Header"
HorizontalAlignment="{TemplateBinding
HorizontalContentAlignment}" />
</Border>
<ItemsPresenter
x:Name="ItemsHost"
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="2" />
</Grid>
<ControlTemplate.Triggers>
<Trigger
Property="IsExpanded"
Value="false">
<Setter
TargetName="ItemsHost"
Property="Visibility"
Value="Collapsed" />
</Trigger>
<Trigger
Property="HasItems"
Value="false">
<Setter
TargetName="Expander"
Property="Visibility"
Value="Hidden" />
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition
Property="HasHeader"
Value="false" />
<Condition
Property="Width"
Value="Auto" />
</MultiTrigger.Conditions>
<Setter
TargetName="PART_Header"
Property="MinWidth"
Value="75" />
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition
Property="HasHeader"
Value="false" />
<Condition
Property="Height"
Value="Auto" />
</MultiTrigger.Conditions>
<Setter
TargetName="PART_Header"
Property="MinHeight"
Value="19" />
</MultiTrigger>
<Trigger
Property="IsSelected"
Value="true">
<Setter
TargetName="Bd"
Property="Background"
Value="AliceBlue" />
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition
Property="IsSelected"
Value="true" />
<Condition
Property="IsSelectionActive"
Value="false" />
</MultiTrigger.Conditions>
<Setter
TargetName="Bd"
Property="Background"
Value="{StaticResource {x:Static
SystemColors.ControlBrushKey}}" />
<Setter
Property="Foreground"
Value="{StaticResource {x:Static
SystemColors.ControlTextBrushKey}}" />
</MultiTrigger>
<Trigger
Property="IsEnabled"
Value="false">
<Setter
Property="Foreground"
Value="{StaticResource {x:Static
SystemColors.GrayTextBrushKey}}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<TreeView>
<TreeViewItem
Style='{StaticResource CheckboxTreeItem}'
Header='Item'
IsExpanded='True'>
<TreeViewItem
Style='{StaticResource CheckboxTreeItem}'
Header='SubItem 1' />
<TreeViewItem
Style='{StaticResource CheckboxTreeItem}'
Header='SubItem 2'>
<TreeViewItem
Style='{StaticResource CheckboxTreeItem}'
Header='SubItem a' />
<TreeViewItem
Style='{StaticResource CheckboxTreeItem}'
Header='SubItem b' />
</TreeViewItem>
</TreeViewItem>
</TreeView>
</Window>
예를 들어 고마워. 무슨 뜻인지 알 잖아. 이제 우리는 루트 요소 Header = 'Item' 과 그 근처의 체크 박스를 가졌습니다. 좋은데, 다음 항목 Header = 'SubItem 1'은 오프셋을 가졌습니다. 괜찮습니다. 그러나 Header = 'SubItem 1'의 체크 박스는 체크 박스 루트 아래에 있어야하며 오프셋이 없어야합니다. –
수정 된 버전을 알려주시겠습니까? –
TreeViewItems 들여 쓰기를 원하지만 모든 체크 박스가 들여 쓰기 되더라도 왼쪽으로 플러시되도록하려면 중첩 수준을 알기위한 몇 가지 방법을 추가해야 할 수 있습니다. Xaml만으로는이 작업을 수행하는 방법을 잘 모르겠습니다. –
- 1. WPF : TreeView의 아이콘
- 2. WPF TreeView의 열 머리글
- 3. Wpf TreeView의 ScrollViewer 조정
- 4. C#, WPF, Treeview의 이미지 재사용
- 5. WPF Treeview의 하단에 단추 추가
- 6. WPF TreeView 및 Checkbox
- 7. "Button"모양이있는 WPF CheckBox
- 8. WPF CheckBox IsChecked가 다른 이벤트로 토글 됨
- 9. TextWrapping을 사용하는 WPF CheckBox 스타일
- 10. WPF TreeView의 컬렉션을 사용하도록 수업을 수정하는 방법
- 11. WPF CheckBox 바인딩이 작동하지 않는 이유는 무엇입니까?
- 12. treeview의 문제
- 13. treeview의 문제
- 14. JTabbedPane : 탭의 왼쪽에있는 아이콘
- 15. JComponent의 왼쪽에있는 SetTitlePosition
- 16. 왼쪽에있는 메뉴가있는 .NET 컨테이너
- 17. TreeView의 VirtualizingStackPanel이 가상화되지 않습니다.
- 18. CheckBox 숨기기 IE8
- 19. WPF TreeView의 GotFocus 이벤트가 트리 위로 버블 링하지 못하도록 함
- 20. WPF TreeView의 SelectedItemChanged 이벤트가 버블 링되는 것을 방지합니다.
- 21. Java DecimalFormat 왼쪽에있는 모든 숫자가
- 22. Treeview의 Win32 텍스트 상자
- 23. Treeview의 드래그 앤 드롭
- 24. Jquery CheckBox
- 25. jquery checkbox
- 26. WPF CheckBox Binding - 속성 집합의 값을 변경해도 UI에 영향을주지 않습니다.
- 27. WPF - ItemsControl - ItemTemplate에있는 "CheckBox"항목을 어떻게 찾을 수 있습니까?
- 28. WPF DataGridTemplateColumn Checkbox 요소 변환기 TwoWay 바인딩으로 IsChecked
- 29. Treeview의 SelectedItem을 다른 명령에 전달하는 방법은 무엇입니까?
- 30. # WinForms TreeView의 실제 가시성을 감지합니다.
답장을 보내 주셔서 감사합니다. 이런 상황을 의미합니다. ----------------------------- | 트 리뷰 열 1 열 2 의 CheckBox TreeViewItem 의 CheckBox TreeViewItem 의 CheckBox TreeViewItem 모든 체크 박스 오른쪽 왼쪽 정렬 트 리뷰해야한다. Withouy LisBox 또는 TreeListView를 사용하여 –
내가 이것을 사용할 때 http://msdn.microsoft.com/en-us/library/ms788727.aspx 왼쪽에 확인란이 있지만 열에 정렬되지 않은 경우 상황이 있습니다. –
원하는 것은 TreeViewItem의 중첩 깊이에 관계없이 모든 확인란이 왼쪽 아래에 나란히 정렬되도록하는 것입니다. 나는 이것이 ControlTemplate을 사용하여 수행 할 수 있다는 것을 거의 확신하고 있지만, 검토 한 지 오래되었습니다. 내가 그것을 찾아서 코드를 게시 할 수 있는지 알게 될 것이다. –