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>