WPF触发器集子元素

WPF触发器集子元素,wpf,xaml,Wpf,Xaml,我有 风格: <ListBox ItemsSource="{Binding MenuItems}" Background="Transparent" BorderBrush="Transparent"> <ListBox.ItemTemplate> <DataTemplate> <Button Command="{Binding Action}" BorderBrush="Transparent" Ba

我有


风格:

<ListBox ItemsSource="{Binding MenuItems}" Background="Transparent" BorderBrush="Transparent">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Button Command="{Binding Action}" BorderBrush="Transparent" Background="Transparent">
                <Grid>
                    <Image Style="{StaticResource MenuImageStyle}" />
                    <TextBlock Text="{Binding Name}" Style="{StaticResource MenuTextStyle}" />
                </Grid>
            </Button>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

但我需要在网格上的鼠标或按钮上同时交换这两者,但我不知道如何交换

我需要这样的东西。这只是解释,没有根据

    <Style TargetType="TextBlock" x:Key="MenuTextStyle">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Foreground" Value="#206c8e" />
            </Trigger>
        </Style.Triggers>
    </Style>
    <Style TargetType="Image" x:Key="MenuImageStyle">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Source" Value="Assets/menuButtonHover.png" />
            </Trigger>
        </Style.Triggers>
    </Style>

我不确定这是最佳实践,但应该是可行的

添加像@PiotrWolkowski说的名字

    <Style TargetType="Grid" x:Key="MenuGridStyle">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter TargetType="Image" Property="Source" Value="Assets/menuButtonHover.png" />
                <Setter TargetType="TextBlock" Property="Foreground" Value="#206c8e" />
            </Trigger>
        </Style.Triggers>
    </Style>

然后像这样修改样式触发器



不太清楚。你需要交换什么?带文本块的图像?前景和背景?一种风格与另一种风格?@PiotrWolkowski我编辑了这个问题,希望你们能理解我now@Peter为文本块和图像命名,然后使用TargetName的Setter属性。@PiotrWolkowski我得到错误:名称“ButtonImage”无法识别。我尝试x:name=“ButtonImage”和name=“ButtonImage”
<Grid>
    <Image Name="ButtonImage" Style="{StaticResource MenuImageStyle}" />
    <TextBlock Name="ButtonText" Text="{Binding Name}" Style="{StaticResource MenuTextStyle}" />
</Grid>