2015-10-05 105 views
0

我有設置爲淺灰色背景的網格,我想知道如何在鼠標懸停在特定網格上時更改網格的背景。目前,我最終不得不在我的屏幕完全黑了,如果我更改了目標類型,從邊境到網格:運行時更改網格的背景

我得到

enter image description here

我想要什麼,但對於所有的淺灰色是黃

enter image description here

XAML

<DataTemplate x:Key="PropertyNodeTemplate"> 
     <Grid VerticalAlignment="Top" HorizontalAlignment="Center" Background="LightGray"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="50"/> 
       <RowDefinition Height="50"/> 
       <RowDefinition Height="50"/> 
       <RowDefinition Height="*"/> 
      </Grid.RowDefinitions> 
      <Border VerticalAlignment="Center" Grid.Row="0"> 
       <Border.Style> 
        <Style TargetType="Border"> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding IsHighlighted}" Value="True"> 
           <Setter Property="Background" Value="Yellow"></Setter> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </Border.Style> 
       <Label Name="PropertyTitle" Content="Property Shnarf" VerticalAlignment="Top" HorizontalAlignment="Center"> 
       </Label> 
      </Border> 
      <Button Name="AddScenario" Click="AddScenarioButton_OnClick" Grid.Row="3" BorderThickness="0"> 
       <Button.Style> 
        <Style TargetType="Button"> 
         <Setter Property="Template"> 
          <Setter.Value> 
           <ControlTemplate TargetType="Button"> 
            <Border BorderThickness="0"> 
             <ContentPresenter/> 
            </Border> 
           </ControlTemplate> 
          </Setter.Value> 
         </Setter> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding IsHighlighted}" Value="True"> 
           <Setter Property="Visibility" Value="Visible"></Setter> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding IsHighlighted}" Value="False"> 
           <Setter Property="Visibility" Value="Hidden"></Setter> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </Button.Style> 
       <Border BorderThickness="1,1,1,1" VerticalAlignment="Center" Background="LightGray"> 
        <Border.BorderBrush> 
         <DrawingBrush Viewport="8,8,8,8" ViewportUnits="Absolute" TileMode="Tile"> 
          <DrawingBrush.Drawing> 
           <DrawingGroup> 
            <GeometryDrawing Brush="LightGray"> 
             <GeometryDrawing.Geometry> 
              <GeometryGroup> 
               <RectangleGeometry Rect="0,0,50,50" /> 
               <RectangleGeometry Rect="50,50,50,50" /> 
              </GeometryGroup> 
             </GeometryDrawing.Geometry> 
            </GeometryDrawing> 
           </DrawingGroup> 
          </DrawingBrush.Drawing> 
         </DrawingBrush> 
        </Border.BorderBrush> 
        <StackPanel Margin="2" Width="120" Orientation="Horizontal" Tag="{Binding RelativeSource={RelativeSource AncestorType={x:Type syncfusion:Node}}}"> 
         <Image Source="{StaticResource ImageBkgPlus}" Width="16" Height="16" Margin="5"/> 
         <Label Width="70" FontSize="10" VerticalAlignment="Center" Content="Add Scenario"> 
         </Label> 
        </StackPanel> 
       </Border> 
      </Button> 
     </Grid> 
    </DataTemplate> 

回答

1

Border只在您的網格的行0,這樣是reponds您DataTrigger的唯一部分。爲什麼不把使用Grid.Style而非Border.Style

<DataTemplate x:Key="PropertyNodeTemplate"> 
    <Grid VerticalAlignment="Top" HorizontalAlignment="Center"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="50"/> 
      <RowDefinition Height="50"/> 
      <RowDefinition Height="50"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 

     <Grid.Style> 
      <Style TargetType="Grid"> 
      <Setter 
       Property="BackGround" 
       Value="LightGray" /> 
      <Style.Triggers> 
       <DataTrigger 
       Binding="{Binding IsHighlighted}" 
       value="True"> 
       <Setter 
        Property="Background" 
        Value="Yellow" /> 
       </DataTrigger> 
      </Style.Triggers> 
      </Style> 
     </Border.Style> 
     ... 
    </Grid> 
</DataTemplate> 

您可以使用IsMouseover,而不是DataTrigger,這取決於你想要什麼:WPF Grid IsMouseOver Property

+0

好的非常感謝,我會試一試,讓你知道 –

+0

還是隻是得到上面的黑屏,即使使用IsMouseOver代替數據觸發:( –

+0

我犯了一個錯誤,並且離開TargetType =「Border」 ,它應該是TartgetType =「Grid」,我認爲它可能已經觸及了'Window'的'Border',我想你可能還需要將'LightGray'放入Style中,因爲使用local/style setters。我會爲此編輯... – PScr