2009-07-21 4 views
1

Ich möchte die Hintergrundfarbe des Rechtecks ​​im IsMouseOver-Trigger ändern, ist das möglich?Ist es möglich, die Eigenschaften eines Unterelements in einem DataTemplate mithilfe von Triggern aus dem enthaltenden Steuerelement zu ändern?

<Window> 
    <Window.Resources> 
     <DataTemplate x:Key="StackListViewItemTemplate"> 
       <Grid> 
        <Rectangle RadiusX="5" RadiusY="5" > 
         <Rectangle.Fill> 
          <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
           <GradientStop Color="#FF000000" Offset="0"/> 
           <GradientStop Color="{Binding Path=Events.Colour}" Offset="1"/> 
          </LinearGradientBrush> 
         </Rectangle.Fill> 
        </Rectangle> 
        <TextBlock FontSize="18pt" Grid.RowSpan="2" Text="{Binding Path=Events.Name}" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
       </Grid> 
      </Grid> 
     </DataTemplate> 
    </Window.Resources> 

    <Grid > 
     <ListView ItemTemplate="{DynamicResource StackListViewItemTemplate}"> 
      <ListView.ItemContainerStyle> 
       <Style TargetType="{x:Type ListViewItem}"> 
        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="true"> 
          <!-- Here I want to set the background colour of the Rectangle in the DataTemplate --> 
         </Trigger> 
         <Trigger Property="IsSelected" Value="true"> 
          <!-- Same here --> 
         </Trigger> 
        </Style.Triggers> 

       </Style> 
      </ListView.ItemContainerStyle> 
     </ListView> 
    </Grid> 

</Window> 

Edit:

<Setter Property="Background" Value="Yellow"/> 

Gibt es eine Möglichkeit, den Eigenschaftswert des Setter geordneten Steuerelemente zu binden?

Antwort

1

Ich habe es in der Vorlage

<DataTemplate x:Key="listItemTemplate" DataType="ListViewItem"> 
    <Grid> 
     <Rectangle Name="myRectangle" RadiusX="5" RadiusY="5" > 
      <Rectangle.Fill> 
       <SolidColorBrush Color="Red" /> 
      </Rectangle.Fill> 
     </Rectangle> 
    </Grid> 
    <DataTemplate.Triggers> 
     <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType=ListViewItem}}" Value="True"> 
      <Setter TargetName="myRectangle" Property="Fill" > 
       <Setter.Value> 
        <SolidColorBrush Color="Green" /> 
       </Setter.Value> 
      </Setter> 
     </DataTrigger> 
    </DataTemplate.Triggers> 
</DataTemplate> 
0

Ja, sollten Sie in der Lage sein, so etwas zu tun:

XAML Tutorial - Changing the Text Color on Mouse Over

... aber mit einem Rechteck natürlich.

+0

Das Problem ist, mit dem Listview und Datatemplate mit einem Datatrigger arbeiten. Der Trigger funktioniert, aber er setzt den Hintergrund des ListViewItems, das Gitter und Rechteck umschließt. Ich möchte den Hintergrund nur des Rechtecks ​​ändern. –

Verwandte Themen