2017-12-08 42 views
1

私はこの上に私の知恵の終わりです、私はそれと遊んで最後の二日間のより良い部分を過ごしました。私mouseover私のTreeViewは期待通りに動作します。この時点でExpander/textを越えるまで、別の背景と枠のブラシが適用されます。私はこれを排除しようとすることに愚かになり、全く何も動作していないようです。私の最後の過度の試みはまだ何が起こっているのか分かりませんでした。WPF TreeViewItemミステリーマウスオーバースタイル

私はそれが頭の上を飛んでいる単純なものだと思うし、この愚かな量のトリガが必要ないことは分かっています。要求されたよう

は、ここではスクリーンショットIssue

だと何を望まれているのテキストは青で、背景が透明のどこが見る効果です。背景と境界ブラシエキスパンダー上

<TreeView x:Name="textureTreeView" ItemsSource="{Binding Category}" Margin="0" SelectedItemChanged="textureTreeView_SelectedItemChanged" Background="#00000000" BorderBrush="{x:Null}" Foreground="#00000000" IsTextSearchEnabled="True"> 

    <TreeView.Resources> 
     <HierarchicalDataTemplate DataType="{x:Type local1:CategoryViewModel}" ItemsSource="{Binding Children}"> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding Name}" IsHitTestVisible="False"/> <!-- This eliminated the text from causing the issue --> 
      </StackPanel> 
     </HierarchicalDataTemplate> 

    </TreeView.Resources> 

    <TreeView.ItemContainerStyle> 
     <Style TargetType="{x:Type TreeViewItem}"> 
      <Setter Property="Foreground" Value="#FFA1A1A1"/> 
      <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}"/> 
      <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/> 
      <Setter Property="FontWeight" Value="Normal"/> 
       <Style.Triggers> 
        <Trigger Property="IsFocused" Value="True"> 
         <Setter Property="FontWeight" Value="Bold"/> 
         <Setter Property="Foreground" Value="#FFFFFFFF"/> 
        </Trigger> 

        <Trigger Property="Expander.IsMouseOver" Value="true"> 
         <Setter Property="Background" Value="#00000000"/> 
         <Setter Property="BorderBrush" Value="#00000000"/> 
         <Setter Property="Foreground" Value="#FF58A6C3"/> 
        </Trigger> 

        <Trigger Property="Grid.IsMouseOver" Value="true"> 
         <Setter Property="Background" Value="#00000000"/> 
         <Setter Property="BorderBrush" Value="#00000000"/> 
         <Setter Property="Foreground" Value="#FF58A6C3"/> 
        </Trigger> 
        <Trigger Property="StackPanel.IsMouseOver" Value="true"> 
         <Setter Property="Background" Value="#00000000"/> 
         <Setter Property="BorderBrush" Value="#00000000"/> 
         <Setter Property="Foreground" Value="#FF58A6C3"/> 
        </Trigger> 
        <Trigger Property="TextBlock.IsMouseOver" Value="true"> 
         <Setter Property="Background" Value="#00000000"/> 
         <Setter Property="BorderBrush" Value="#00000000"/> 
         <Setter Property="Foreground" Value="#FF58A6C3"/> 
        </Trigger> 
        <Trigger Property="ItemsPresenter.IsMouseOver" Value="true"> 
         <Setter Property="Background" Value="#00000000"/> 
         <Setter Property="BorderBrush" Value="#00000000"/> 
         <Setter Property="Foreground" Value="#FF58A6C3"/> 
        </Trigger> 
        <Trigger Property="Path.IsMouseOver" Value="true"> 
         <Setter Property="Background" Value="#00000000"/> 
         <Setter Property="BorderBrush" Value="#00000000"/> 
         <Setter Property="Foreground" Value="#FF58A6C3"/> 
        </Trigger> 
        <Trigger Property="ToggleButton.IsMouseOver" Value="true"> 
         <Setter Property="Background" Value="#00000000"/> 
         <Setter Property="BorderBrush" Value="#00000000"/> 
         <Setter Property="Foreground" Value="#FF58A6C3"/> 
        </Trigger> 
        <Trigger Property="ToggleButton.IsChecked" Value="true"> 
         <Setter Property="Background" Value="#00000000"/> 
         <Setter Property="BorderBrush" Value="#00000000"/> 
         <Setter Property="Foreground" Value="#FF58A6C3"/> 
        </Trigger> 

        <MultiTrigger> 
         <MultiTrigger.Conditions> 
          <Condition Property="IsMouseOver" Value="True"/> 
         </MultiTrigger.Conditions> 
         <Setter Property="Background" Value="#00000000"/> 
         <Setter Property="BorderBrush" Value="#00000000"/> 
         <Setter Property="Foreground" Value="#FF58A6C3"/> 
        </MultiTrigger> 
        <MultiTrigger> 
         <MultiTrigger.Conditions> 
          <Condition Property="ToggleButton.IsMouseOver" Value="true"/> 
          <Condition Property="ToggleButton.IsChecked" Value="true"/> 
         </MultiTrigger.Conditions> 
         <Setter Property="Background" Value="#00000000"/> 
         <Setter Property="BorderBrush" Value="#00000000"/> 
         <Setter Property="Foreground" Value="#FF58A6C3"/> 
        </MultiTrigger> 
        <MultiTrigger> 
         <MultiTrigger.Conditions> 
          <Condition Property="ToggleButton.IsMouseOver" Value="true"/> 
          <Condition Property="ToggleButton.IsChecked" Value="false"/> 
         </MultiTrigger.Conditions> 
         <Setter Property="Background" Value="#00000000"/> 
         <Setter Property="BorderBrush" Value="#00000000"/> 
         <Setter Property="Foreground" Value="#FF58A6C3"/> 
        </MultiTrigger> 

       </Style.Triggers> 

      </Style> 
     </TreeView.ItemContainerStyle> 
    </TreeView> 

更新を望んでいないときに:私は正確に何が起こっているかに遠くドリルダウンすることができたおかげで@桂の提案に。 There is an unnamed Borderは、スタイルを適用しているpulling template propertiesです。

私はすでに自分のスタイルテンプレートをすべて削除しようとしましたが、どこから取り除かれているのかわかりません。私が今作業している間は、境界の設定に非常に時間がかかります別のスタイル。

更新:私の人生にとって、私はこの境界線をスタイリングすることはできません。ダウンロードしたコントロールテンプレートの一部ではないようです。

+0

は、私はあなたの問題の権利を取得しましたか? MouseOverトリガーは、ツリービューでは正常に動作しますが、Expanderでは動作しません。 – Yvonnila

+0

達成したいことや期待している行動を説明できますか? – Yvonnila

+0

スクリーンショットが役に立ちました –

答えて

0

私はそれを稼働させました! 私は何百万もののようにしてみましたが、テンプレートや設定者はいないでしょう。最後に、コントロールテンプレートを直接treeviewitemのスタイルに置き換えて、それが機能しました。私はtreeviewitemのmouseoverに設定するエキスパンダーの塗りつぶしの色を取得することに小さな問題がありますが、これは私にとって大きな問題ではありません。資源

<SolidColorBrush x:Key="GlyphBrush" Color="#FFA1A1A1" /> 
<Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton"> 
    <Setter Property="Foreground" Value="#FFFFFF"/> 
    <Setter Property="Focusable" Value="False"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ToggleButton"> 
       <Grid Width="15" Height="13" 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"/> 
       </Grid> 
       <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="#FF717171" StrokeDashArray="1 2" Opacity="0"/> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

次に、ページ内:

<TreeView x:Name="textureTreeView" ItemsSource="{Binding Category}" SelectedItemChanged="textureTreeView_SelectedItemChanged" Background="#00000000" BorderBrush="{x:Null}" Foreground="#00000000" IsTextSearchEnabled="True"> 
     <TreeView.Resources> 
      <HierarchicalDataTemplate DataType="{x:Type local1:CategoryViewModel}" ItemsSource="{Binding Children}"> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding Name}" IsHitTestVisible="False"/> 
       </StackPanel> 
      </HierarchicalDataTemplate> 
     </TreeView.Resources> 
     <TreeView.ItemContainerStyle> 
      <Style TargetType="{x:Type TreeViewItem}"> 
             <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="#FFA1A1A1"/> 
        <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}"/> 
        <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/> 
        <Setter Property="FontWeight" Value="Normal"/> 
        <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> 
            <ToggleButton x:Name="Expander" Style="{StaticResource ExpandCollapseToggleStyle}" IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" ClickMode="Press"/> 
            <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="IsFocused" Value="True"> 
             <Setter Property="FontWeight" Value="Bold"/> 
             <Setter Property="Foreground" Value="#FFFFFFFF"/> 
            </Trigger> 

            <Trigger Property="IsMouseOver" Value="true"> 
             <Setter Property="Border.Background" Value="#00000000"/> 
             <Setter Property="Background" Value="#00000000"/> 
             <Setter Property="BorderBrush" Value="#00000000"/> 
             <Setter Property="Foreground" Value="#FF58A6C3"/> 
            </Trigger> 
            <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 Property="FontWeight" Value="Bold"/> 
             <Setter Property="Foreground" Value="#ffffffff"/> 
            </Trigger> 
            <MultiTrigger> 
             <MultiTrigger.Conditions> 
              <Condition Property="IsSelected" Value="true"/> 
              <Condition Property="IsSelectionActive" Value="false"/> 
             </MultiTrigger.Conditions> 
             <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
            </MultiTrigger> 
            <Trigger Property="IsEnabled" Value="false"> 
             <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
            </Trigger> 
           </ControlTemplate.Triggers> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
       </Style> 
     </TreeView.ItemContainerStyle> 
    </TreeView> 
関連する問題