Comment insérer la case à cocher à gauche de l'arborescenceview (expander), il s'agissait donc du même élément.WPF CheckBox à gauche de l'arborescence
Répondre
Vous pouvez modifier l'en-tête de votre TreeViewItem pour ajouter une case à cocher à gauche. Voici un exemple rapide pour vous aider à démarrer, ce xaml ajoute simplement une case à cocher à gauche et un TextBlock à droite.
<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>
En fonction de votre scénario, vous pouvez créer un nouveau modèle entier pour remplacer l'apparence par défaut pour tous les TreeViewItems, si vous le faites, alors checkout l'exemple modèle de contrôle MSDN TreeViewItem:
Sergo, Voici une version utilisant le modèle de contrôle et nous avons placé des cases à cocher dans la colonne 0 de l'article. Ils doivent s'aligner à gauche avec le TreeViewItem à droite. La pièce 'magic' est dans le style CheckboxTreeItem où nous ajoutons un WrapPanel et le placons dans Grid.Column = '0'.
<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>
Merci beaucoup par exemple. Vous comprenez ce que je veux dire. Maintenant, nous avons l'élément racine Header = 'Item' et près de case à cocher - c'est bon, mais l'article suivant Header = 'SubItem 1' a offset - c'est ok aussi. Mais la case à cocher de Header = 'SubItem 1' doit rester sous la case à cocher root, elle n'a pas de décalage. –
Pourriez-vous me donner une version révisée? –
Si vous voulez que les TreeViewItems soient en retrait, mais que toutes les cases à cocher soient à gauche (quel que soit leur retrait), vous devrez peut-être ajouter un moyen de connaître votre niveau d'imbrication. Je ne suis pas sûr de la façon d'accomplir cela dans Xaml seul. –
- 1. WPF checkbox binding
- 2. WPF Toolkit DataGrid Checkbox Problèmes
- 3. WPF CheckBox avec l'aspect "Button"
- 4. Checkbox Informations de liaison dans WPF
- 5. WPF, mise à jour de TextBlock lorsque CheckBox est cochée
- 6. WPF DataGrid - Masquage d'une colonne à l'aide d'un CheckBox
- 7. de ne pas de contrôle WPF Checkbox réagissent à l'événement MouseLeftButtonDown
- 8. WPF - Liaison à CheckBox ne fonctionnant pas dans HierarchicalDataTemplate
- 9. Impossible d'ajouter une commande routée à une CheckBox dans WPF
- 10. WPF checkbox supprimer par programme l'événement
- 11. WPF changement marge gauche de textbox
- 12. Ajout de CheckBox à DefaultTableModel
- 13. Html - De checkbox à combobox
- 14. Expliquez ceci: CheckBox checkbox = (CheckBox) expéditeur;
- 15. Checkbox string [] à int []
- 16. Comment faire pour ouvrir le menu à gauche dans WPF?
- 17. wpf dataagrid colonne supplémentaire dans l'en-tête à gauche
- 18. faux avec un mousedown bouton gauche WPF
- 19. WPF - Développer la fenêtre vers la gauche
- 20. WPF Checkbox n'affiche pas un UIElement comme son contenu
- 21. Comment obtenir la sélection des produits dans WPF CheckBox ListBox
- 22. Alternatives à HTML Refroidir Checkbox
- 23. Comment faire pour que CheckBox dans une CheckBoxList apparaisse sur la gauche de mon texte?
- 24. Obtenir un état de checkbox à div
- 25. WPF TextBlock Texte de débordement vers la gauche
- 26. Chaîne de remplissage à gauche
- 27. De droite à gauche TListView
- 28. liaison de données checkbox
- 29. CheckBox Groupement
- 30. Jquery Checkbox
Merci pour votre réponse. Je veux dire une situation comme celle-ci: ----------------------------- | TreeView Column1 Colonne2 CheckBox TreeViewItem CheckBox TreeViewItem CheckBox TreeViewItem Toutes les cases doivent être alignement sur la gauche, TreeView sur le côté droit. Withou utilisant LisBox ou TreeListView –
Lorsque je l'utilise http://msdn.microsoft.com/en-us/library/ms788727.aspx Je suis situation lorsque case à cocher sur le côté gauche, mais pas d'alignement dans la colonne. –
Ce que vous voulez, c'est que toutes les cases à cocher soient alignées l'une en dessous de l'autre à gauche, quelle que soit la profondeur d'imbrication de TreeViewItem. Je suis presque certain que c'est faisable en utilisant le ControlTemplate, mais ça fait un moment que je l'ai étudié. Je vais voir si je peux le trouver et poster du code. –