2009-07-21 20 views
1

我想更改IsMouseOver觸發器中矩形的背景顏色,這可能嗎?是否可以使用包含控件中的觸發器更改DataTemplate中子項的屬性?

<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> 

編輯:

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

是否有綁定的setter到子控件的屬性值的方法嗎?

回答

1

我得到它的工作模板

<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

是的,你應該能夠做這樣的事情:

XAML Tutorial - Changing the Text Color on Mouse Over

...但當然是一個矩形。

+0

的問題是使用ListView和DataTemplate中使用datatrigger。觸發器工作,但它設置包裝Grid和Rectangle的ListViewItem的背景。我想改變矩形的背景。 – 2009-07-21 14:40:30

相關問題