如何从silverlight ListBox中删除焦点矩形?我有这段代码:
<ListBox x:Name="MyListBox" >
<ListBox.ItemTemplate>
<DataTemplate>
<Grid >
...snipped...
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
当我运行它时,我得到了异常
System.Windows.Markup.XamlParseException: Invalid attribute value FocusVisualStyle for property Property. [Line: 47 Position: 38]
我在做错了什么?非常感谢:))
答案 0 :(得分:1)
在Silverlight中,ListBoxItem
类型没有FocusVisualStyle
属性,因此出错。
为了实现目标,您需要为ListBoxItem
提供新模板。从Silverlight文档中,您将找到ListBox Styles and Templates中的默认模板。
将ListBoxItem模板复制到静态资源(App.Xaml将是个好地方)
<ControlTemplate TargetType="ListBoxItem" x:Key="ListBoxItemSansFocus">
<!-- copy of the rest of the control template here -->
</ControlTemplate>
现在从“聚焦”StoryBoard
中删除VisualState
,然后删除名为“FocusVisualElement”的最终矩形。
现在让你的ContainerStyle
属性看起来像: -
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="Template" Value="{StaticResource ListBoxItemSansFocus}" />
</Style>
</ListBox.ItemContainerStyle>