这可能很简单......我有一个嵌入了ContextMenu的Listbox,每次出现ContextMenu时,Listbox都会将其背景更改为opaque black。我该如何防止这种情况发生?
以下是一些示例XAML:
<ListBox x:Name="FolderItems" ItemTemplate="{StaticResource ItemTemplate}" ItemContainerStyle="{StaticResource ItemListBox}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" ItemsSource="{Binding FolderItems}">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu
x:Name="FolderContextMenu"
Margin="20"
Background="WhiteSmoke"
BorderBrush="Black"
BorderThickness="1.0"
Closed="ContextMenu_Closed">
<toolkit:MenuItem Loaded="ContextMenuItem_Loaded"
Opacity="0.0" Margin="5" Background="Transparent"
Click="ContextMenuItem_Click" Name="ContextMenuDelete">
<toolkit:MenuItem.Header>
<TextBlock Text="delete" FontFamily="Segoe WP Bold"/>
</toolkit:MenuItem.Header>
</toolkit:MenuItem>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</ListBox>
由于
更新
在上下文菜单出现时,我仍然没有弄清楚为什么整个列表框变黑了。我已将我能想到的一切都设置为透明刷。
答案 0 :(得分:2)
我通过打开工具包(下载源:Silverlight Toolkit)并在 ContextMenu.cs 中自行编辑颜色值来解决我的问题。然后,我重建并定位了我创建的dll,而不是安装程序中的那个。
唯一的问题是我现在需要特定的应用程序,但至少我可以有一个解决方案。我也相信如果你设置 IsZoomEnabled = false ,它首先不会有这种行为,但这是一种不同的体验。
以下是我编辑的版本:Pastebin
查看这样的行,它们是您需要更改的行:
// Create a layer for the element's background
UIElement elementBackground = new Rectangle
{
Width = ownerElement.ActualWidth,
Height = ownerElement.ActualHeight,
Fill = new SolidColorBrush(Colors.White),
};
祝你好运!
答案 1 :(得分:1)
有一种简单的方法可以做到这一点。出于某种原因,MS Access在使用列表框时补充了颜色。如果将前景设置为红色,它将显示绿色等
因此,将背景颜色设置为黑色(0),将前景颜色设置为白色(16777215)。反直觉,但它的工作原理是MS Access 2002。
答案 2 :(得分:0)
如果没有看到您正在使用的模板我无法确定,但您可能已经硬编码了背景值但未考虑列表项的不同状态并且正在显示默认状态颜色/值