2017-02-16 54 views
0

enter image description here我需要移动切换按钮相对于子项。它根本没有移动,并与父项目。它正在混淆父母和孩子的物品。这里是我的源代码。TreeViewItem切换不随子项移动

<Style TargetType="{x:Type TreeViewItem}"> 
     <Setter Property="MinHeight" Value="25" /> 
     <Setter Property="HorizontalContentAlignment" Value="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" /> 
     <Setter Property="VerticalContentAlignment" Value="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" /> 
     <Setter Property="FontWeight" Value="SemiBold"/> 
     <Setter Property="FocusVisualStyle" Value="{x:Null}" /> 
     <Setter Property="SnapsToDevicePixels" Value="True" /> 
     <Setter Property="Margin" Value="0,0,0,2"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TreeViewItem}"> 
        <StackPanel> 
         <Border x:Name="Bd" 
          Padding="0,0,0,0" 
          MinHeight="{TemplateBinding MinHeight}" UseLayoutRounding="True" 
          SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"> 
          <Border.Background> 
           <SolidColorBrush Color="#FFCECEC6" Opacity="1"/> 
          </Border.Background> 
          <Grid 
           Background="Transparent" VerticalAlignment="Stretch"> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition MinWidth="19" Width="Auto" /> 
            <ColumnDefinition Width="*" /> 
           </Grid.ColumnDefinitions> 
           <ToggleButton x:Name="Expander" Style="{StaticResource ExpandCollapseToggleStyle}" 
              IsChecked="{Binding Path=IsExpanded, RelativeSource={x:Static RelativeSource.TemplatedParent}, Mode=TwoWay}" 
              ClickMode="Press" /> 
           <ContentPresenter x:Name="PART_Header" Grid.Column="1" ContentSource="Header" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
             HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> 
          </Grid> 
         </Border> 
         <ItemsPresenter x:Name="ItemsHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> 
        </StackPanel> 
        <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> 

         <Trigger SourceName="Bd" Property="IsMouseOver" Value="True"> 
          <Setter TargetName="Bd" Property="Background"> 
           <Setter.Value> 
            <SolidColorBrush Color="#FF5A5A56" Opacity="0.8" /> 
           </Setter.Value> 
          </Setter> 
          <Setter Property="Foreground" Value="White"/> 
         </Trigger> 
         <Trigger Property="IsSelected" Value="True"> 
          <Setter TargetName="Bd" Property="Background"> 
           <Setter.Value> 
            <SolidColorBrush Color="#FF5A5A56" Opacity="1" /> 
           </Setter.Value> 
          </Setter> 
          <Setter Property="Foreground" Value="White"/> 
         </Trigger> 
         <Trigger Property="IsEnabled" Value="False"> 
          <Setter Property="Foreground" Value="{DynamicResource HoverBrush}" /> 
         </Trigger> 
         <MultiTrigger> 
          <MultiTrigger.Conditions> 
           <Condition Property="IsSelected" Value="True" /> 
           <Condition Property="Selector.IsSelectionActive" Value="True" /> 
          </MultiTrigger.Conditions> 
          <Setter TargetName="Bd" Property="Background" Value="#FF5A5A56" /> 
         </MultiTrigger> 
         <MultiTrigger> 
          <MultiTrigger.Conditions> 
           <Condition Property="IsSelected" Value="True" /> 
           <Condition Property="Selector.IsSelectionActive" Value="False" /> 
          </MultiTrigger.Conditions> 
          <Setter TargetName="Bd" Property="Background" Value="#FF5A5A56" /> 
         </MultiTrigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
      <Trigger Property="VirtualizingStackPanel.IsVirtualizing" Value="True"> 
       <Setter Property="ItemsPanel"> 
        <Setter.Value> 
         <ItemsPanelTemplate> 
          <VirtualizingStackPanel /> 
         </ItemsPanelTemplate> 
        </Setter.Value> 
       </Setter> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

它以同样的方式放置父项和子项。

回答

0

我不知道你试图但是实现,改变这一部分是什么,它应该工作:

<ToggleButton Grid.RowSpan="2" VerticalAlignment="Center" x:Name="Expander" Style="{StaticResource ExpandCollapseToggleStyle}" 
             IsChecked="{Binding Path=IsExpanded, RelativeSource={x:Static RelativeSource.TemplatedParent}, Mode=TwoWay}" 
             ClickMode="Press" /> 

Grid.RowSpan="2" VerticalAlignment="Center"部分 请注意,您可能要更改Margin,或者一些其他属性改变其立场。