gpt4 book ai didi

wpf - 在 Windows 8 中删除控件上的鼠标悬停状态

转载 作者:行者123 更新时间:2023-12-04 04:52:33 24 4
gpt4 key购买 nike

我用一个示例应用程序简化了我的问题。所以我有一个列表,其中包含一些由矩形表示的对象。

但是如果我的应用程序打开 Windows 8,我会遇到问题。当我将鼠标放在元素上时,我的矩形周围会出现一个蓝色矩形。我尝试了一些在互联网上找到的解决方案,但都没有奏效。

我的代码:

<Window x:Class="Test_application.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Test_application"
Title="MainWindow" Height="350" Width="525">
<Grid Background="DarkGray">
<ListBox Margin="10" x:Name="lbTest">
<ListBox.Resources>
<DataTemplate DataType="{x:Type local:Segment}">
<Rectangle Width="150" Height="10" Stroke="Gray" StrokeThickness="1.354" Margin="10"/>
</DataTemplate>
</ListBox.Resources>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Canvas.Left" Value="{Binding X}"/>
<Setter Property="Canvas.Top" Value="{Binding Y}"/>
<Setter Property="Margin" Value="0" />
<Setter Property="Focusable" Value="False" />
<Setter Property="Padding" Value="0" />
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Background" Value="{x:Null}" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
</Grid>

Application

最佳答案

选择和鼠标悬停颜色在 Triggers 中定义在 ControlTemplate对于 ListBoxItem,如果您想为它们使用不同的(或不使用)颜色,则需要对其进行自定义。根据您想要多少原始触发器功能,您可以制作原始触发器的副本(Blend 会为您执行此操作)并对其进行修改或仅使用如下简单的内容:

        <ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Canvas.Left" Value="{Binding X}"/>
<Setter Property="Canvas.Top" Value="{Binding Y}"/>
<Setter Property="Margin" Value="0" />
<Setter Property="Focusable" Value="False" />
<Setter Property="Padding" Value="0" />
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Background" Value="{x:Null}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>

或者,您应该考虑是否真的需要 ListBox或者可以只使用基础 ItemsControl ,它没有您试图摆脱的鼠标悬停行为。决定应基于您是否需要选择项目,因为这是 ListBox 的首要任务。添加。

关于wpf - 在 Windows 8 中删除控件上的鼠标悬停状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17215304/

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