gpt4 book ai didi

WPF 列表框选择颜色

转载 作者:行者123 更新时间:2023-12-03 21:16:34 27 4
gpt4 key购买 nike

抱歉,如果之前有人问过这个问题,但我无法在弹出的相关问题或 Google 上找到我正在寻找的解决方案。

在我的应用程序中,我试图重新创建 Words 新文档对话框,在项目的左侧列出项目,在右侧列出一个下方带有文本的图标。在 Word 中,当您将鼠标悬停在其上时它具有橙色渐变,当您选择一个项目时它具有更暗的渐变。我已经重新创建了大部分内容,除了在选择项目后更改背景颜色。这是我用来创建它的代码:

    <ListView Margin="236,34,17,144" Name="listView1" HorizontalContentAlignment="Stretch">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="5" IsItemsHost="True" VerticalAlignment="Top" >
</UniformGrid>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate >
<StackPanel HorizontalAlignment="Center" Width="auto">
<Image Source="images/document32.png" HorizontalAlignment="Center"/>
<TextBlock Text="{Binding}" HorizontalAlignment="Center" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}" >
<Style.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Foreground" Value="Yellow" />
<Setter Property="Background" Value="Orange" />
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Foreground" Value="Black" />
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="1,0">
<GradientStop Color="#d3e7ff" Offset="0.986"/>
<GradientStop Color="#b0d2fc" Offset="0.5"/>
<GradientStop Color="#8ec1ff" Offset="0.51"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>

</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
</ListView>

所以这会创建我想要的外观,将鼠标悬停,当我在 ListView 中选择一个项目时,它会将字体文本更改为黄色,但它拒绝将背景从默认的蓝色更改为橙​​色,理想情况下无论如何,这将是另一种渐变,而不是填充颜色。谢谢你的帮助。

最佳答案

您可以执行一些技巧,例如覆盖系统颜色键,但很可能您需要提供一个新模板来实现此目的。这是我放在一起的一个相当漂亮的:

<Style x:Key="ListboxItemStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="Margin" Value="1,2,1,1"/>
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="Background" Value="{StaticResource NormalItemBackground}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Grid>
<Border Background="{TemplateBinding Background}" />
<Border Background="#BEFFFFFF" Margin="3,1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Border Margin="2,1,2,0" Grid.Row="0" Background="#57FFFFFF" />
</Grid>
</Border>
<ContentPresenter Margin="8,5" />
</Grid>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="IsSelected" Value="False"/>
</MultiTrigger.Conditions>
<Setter Property="Background" Value="{StaticResource HotItemBackground}" />
</MultiTrigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{StaticResource SelectedItemBackground}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="ListBoxStyle" TargetType="{x:Type ListBox}">
<Setter Property="ItemContainerStyle" Value="{DynamicResource ListboxItemStyle}" />
<Setter Property="Margin" Value="3,3,2,1" />
</Style>

关于WPF 列表框选择颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/794792/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com