0
我正尝试在桌面应用程序内部创建一种用于导航的左侧菜单。我的想法是使用按钮作为列表视图项目,应该以这种方式行事:当我用鼠标悬停他们时,他们的背景应该改变颜色(变成darkCyan),当我点击一个它的背景颜色应该持久地改变(darkCyan),直到我点击在列表的另一个按钮上。问题是我正在使用DataTemplate属性来指定按钮的外观应该如何,我尝试应用触发器来更改ListView的ControlTemplate上的背景颜色。结果是,有时候背景颜色会改变,但与按钮相关的命令在其他情况下不会被触发。我认为我在树视图的错误元素中做了这些事情,但是我没有足够的树视图知识,所以我不理解我做错了什么。这里是XAML中,我定义样式的按钮的代码和ListView控件WPF将触发器应用于列表视图项目以更改背景
<Window.Resources>
<DataTemplate DataType="{x:Type viewModels:TripViewModel}">
<views:TripView />
</DataTemplate>
<Style TargetType="{x:Type Button}">
<Setter Property="Height"
Value="50" />
<Setter Property="Background"
Value="#555D6F" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border>
<Grid Background="Transparent">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border BorderBrush="Transparent"
BorderThickness="0"
Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver"
Value="True">
<Setter Property="Background"
Value="DarkCyan" />
</Trigger>
<Trigger Property="IsSelected"
Value="True">
<Setter Property="Background"
Value="DarkCyan" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
这里是我创建的ListView
<ListView Name="MenuButtons"
ItemsSource="{Binding PageViewModels}"
Background="Transparent"
IsSynchronizedWithCurrentItem="True">
<ListView.ItemTemplate>
<DataTemplate>
<Button Content="{Binding Name}"
Command="{Binding DataContext.ChangePageCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
Margin="0" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
任何人都可以帮助的代码? 感谢