当我将鼠标放在列表框中的项目上时,我一直在尝试删除蓝框,我的想法也没用了,也许你会提出任何问题。提前谢谢。
简单的列表框
<ListBox ItemsSource="{Binding Mylist}" />
不幸的是,下面的解决方案不起作用
<ListBox ItemsSource="{Binding lista}" >
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/>
</Style.Resources>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
答案 0 :(得分:1)
此行为由控件模板决定。
如果您熟悉XAML,请右键单击ListBox,转到Edit Template -> Edit Copy...
检查Border
标记。
为了帮助您,请同时查看此链接:ListBox Styles and Templates
答案 1 :(得分:0)
出现了新问题,我获得了没有蓝色边框的列表框
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="VerticalContentAlignment" Value="Top" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter
x:Name="contentPresenter"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
但是我已经像这样设置了ItemContainerStyle
<Style TargetType="ListBoxItem" x:Key="ContainerStyle">
<Setter Property="ContentTemplate" Value="{StaticResource not_mouseover}"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="ContentTemplate" Value="{StaticResource mouseover}"/>
</Trigger>
</Style.Triggers>
</Style>
<ListBox ItemsSource="{Binding lista}" ItemContainerStyle="{StaticResource ContainerStyle}">
在这种情况下,事实证明它不起作用(我的意思是蓝色边框如前所述)。如果我将ItemTemplate设置为任何指定的DateTemplate,它可以正常工作,但这里没有。你碰巧知道为什么吗? 我整理了这个。 ListboxItem只有一种风格
<Style x:Key="item_template" TargetType="ListBoxItem">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Template" Value="{StaticResource control_mouseover}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Template" Value="{StaticResource control_not_mouseover}"/>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<ListBox ItemsSource="{Binding lista}" ItemContainerStyle="{StaticResource item_template}">
</ListBox>
并声明ControlTemplate以删除蓝色边框
<ControlTemplate x:Key="control_not_mouseover" TargetType="ListBoxItem">
<ContentPresenter
Content="{TemplateBinding Content}"
ContentTemplate="{StaticResource not_mouseover}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"/>
</ControlTemplate>
<ControlTemplate x:Key="control_mouseover" TargetType="ListBoxItem">
<ContentPresenter
Content="{TemplateBinding Content}"
ContentTemplate="{StaticResource mouseover}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"/>
</ControlTemplate>
也许有人会利用这一点。
答案 2 :(得分:0)
没有x:Key
的样式适用于所有TargetType控件。
例如:
<Style TargetType="Button">
<Setter Property="Background" Value="Green" />
</Style>
每次设置新的Button
控件时都会有效。因此,如果您插入Button
而未指定如下样式:<Button/>
它将具有绿色背景,如上所述。
另一方面:
<Style TargetType="Button" x:Key="myButton">
<Setter Property="Background" Value="Green" />
</Style>
仅适用于指定Button
模板的Style
控件
即:<Button Style="{StaticResource myButton}" />
- &gt;此Button
将具有绿色背景,所有其他按钮将具有默认背景颜色。
我的建议是:始终在您的样式中设置一个x:Key,以便稍后设置它们。在您的方案中,将x:Key="ContainerStyle"
放在第一个代码中,然后删除稍后声明的样式。它应该工作。