8,734
社区成员
发帖
与我相关
我的任务
分享
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter Event="Selected" Handler="TreeViewItem_Selected" />
</Style>
</TreeView.ItemContainerStyle>
<!--单击展开-->
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="True"/>
<Condition Property="HasItems" Value="True"/>
<Condition Property="IsExpanded" Value="False"/>
</MultiTrigger.Conditions>
<Setter Property="Visibility" TargetName="ItemsHost" Value="Visible"/>
</MultiTrigger>
<!--单击关闭-->
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="True"/>
<Condition Property="HasItems" Value="True"/>
<Condition Property="IsExpanded" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Visibility" TargetName="ItemsHost" Value="Collapsed"/>
</MultiTrigger>
您试试看,我也不知道怎么使用动态图,效果没法给您展示出来,就是关闭效果不对
<!--单击展开-->
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="True"/>
<Condition Property="HasItems" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="IsExpanded" Value="False"/>
<Setter Property="Visibility" TargetName="ItemsHost" Value="Visible"/>
<Setter Property="IsExpanded" Value="True"/>
</MultiTrigger>
<Grid x:Name="grid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<CheckBox Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"
Panel.ZIndex="3" HorizontalAlignment="Left" Height="20" x:Name="Expander"
IsThreeState="False" Content="{Binding XPath=@Name}">
</CheckBox>
<ItemsPresenter x:Name="ItemsHost" Margin="20,0,0,0" Grid.Column="0" Grid.Row="1"/>
</Grid>
MultiTrigger 内容不变[/quote]
哦,用能触发check 的控件替换文字和按钮区域是么,,,成 我试试看
<Grid x:Name="grid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<CheckBox Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"
Panel.ZIndex="3" HorizontalAlignment="Left" Height="20" x:Name="Expander"
IsThreeState="False" Content="{Binding XPath=@Name}">
</CheckBox>
<ItemsPresenter x:Name="ItemsHost" Margin="20,0,0,0" Grid.Column="0" Grid.Row="1"/>
</Grid>
MultiTrigger 内容不变
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" SourceName="Expander" Value="True"/>
<Condition Property="HasItems" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Visibility" TargetName="ItemsHost" Value="Visible"/>
</MultiTrigger>
<!--单击关闭-->
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" SourceName="Expander" Value="False"/>
<Condition Property="HasItems" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Visibility" TargetName="ItemsHost" Value="Collapsed"/>
</MultiTrigger>
</ControlTemplate.Triggers>
TreeViewItem treeviewItem = sender as TreeViewItem;
if (treeviewItem != null)
{
if (treeviewItem.IsSelected)
{
treeviewItem.IsExpanded = !treeviewItem.IsExpanded;
treeviewItem.IsSelected = false;
}
}
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="800" Height="500" WindowStartupLocation="CenterScreen">
<Window.Resources>
<XmlDataProvider x:Key="InventoryData" XPath="Supermarket">
<x:XData>
<Supermarket xmlns="" Name="Supermarket">
<Fruits Name="Fruits">
<Fruit Name="Peach"/>
<Fruit Name="Banana"/>
<Fruit Name="Orange"/>
</Fruits>
<Drinks Name="Drinks">
<Drink Name="Coca Cola"/>
</Drinks>
</Supermarket>
</x:XData>
</XmlDataProvider>
<HierarchicalDataTemplate x:Key="xmltemplate" ItemsSource="{Binding}">
<TextBlock Text="{Binding XPath=@Name}"></TextBlock>
</HierarchicalDataTemplate>
<Style x:Key="treeViewItemStyle" TargetType="TreeViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TreeViewItem}">
<Grid x:Name="grid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ToggleButton Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Panel.ZIndex="3" Width="15" HorizontalAlignment="Left" Height="15" x:Name="Expander" ClickMode="Press" IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}"/>
<Border x:Name="Bd" Grid.Row="0" Margin="-40,0,0,0" VerticalAlignment="Center" Grid.Column="0" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
<ContentPresenter VerticalAlignment="Bottom" Margin="70,0,0,0" x:Name="PART_Header" ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
<ItemsPresenter x:Name="ItemsHost" Margin="20,0,0,0" Grid.Column="0" Grid.Row="1"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded" Value="false">
<Setter Property="Visibility" TargetName="ItemsHost" Value="Collapsed"/>
</Trigger>
<Trigger Property="IsExpanded" Value="true">
<Setter Property="Visibility" TargetName="ItemsHost" Value="Visible"/>
</Trigger>
<Trigger Property="HasItems" Value="false">
<Setter Property="Visibility" TargetName="Expander" Value="Hidden"/>
</Trigger>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background" TargetName="Bd" Value="Red"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<TreeView x:Name="tv" ItemsSource="{Binding Source={StaticResource InventoryData}}"
ItemContainerStyle="{StaticResource treeViewItemStyle}"
ItemTemplate="{StaticResource xmltemplate}">
</TreeView>
</Grid>
</Window>