WP7 -- 上下文菜单强制Listbox使用黑色背景

3

这可能是一个简单的问题...我有一个包含ContextMenu的Listbox,每次ContextMenu出现时,Listbox就会变成不透明的黑色背景。我该如何防止发生这种情况?

以下是一些示例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>

感谢

更新

我仍然没有弄清楚为什么整个列表框在上下文菜单出现时会变黑。我已经将我能想到的所有内容设置为透明画刷。


你实际上还没有设置列表框的背景,所以它不应该一开始就是黑色(或白色,取决于主题),对吧? - Claus Jørgensen
谢谢您的建议,但我尝试将透明背景应用于列表框及其中包含的每个项目,但黑色背景仍然显示。上下文菜单是否有某种设置可以影响其目标? - RyanM
我看到这个内容,还以为“我写的吗?”我目前也有完全相同的问题。 - William Melani
@RyanM 你有没有在这方面取得任何进展? - William Melani
@RyanM 啊.. 我实际上在 ItemTemplate(DataTemplate) 中遇到了这个问题。 - William Melani
显示剩余3条评论
3个回答

2
我解决了自己的问题,方法是打开工具包(下载源代码:Silverlight Toolkit),并在 ContextMenu.cs 中自行编辑颜色值。然后,我重新构建并针对我创建的 dll 进行了定位,而不是使用安装程序中的 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),
                };

祝好运!


谢谢。它应该能解决问题。我从未考虑过编辑工具包。很棒。 - RyanM

1

有一种简单的方法可以做到这一点。由于某种原因,当使用列表框时,MS Access会补充颜色。如果将前景设置为红色,则会显示绿色等。

因此,将背景颜色设置为黑色(0),将前景颜色设置为白色(16777215)。虽然与直觉相反,但在MS Access 2002中它确实有效。


0

没有看到你使用的模板,我无法确定,但你可能已经硬编码了一个背景值,但没有考虑列表项的不同状态,因此默认状态的颜色/值被显示出来了。


嗯...我编辑了列表框的项目容器样式,并为每个状态设置了无背景笔刷,但问题仍然存在。即使我只有一个元素在列表框中,当我按住并出现上下文菜单时,整个列表框的背景都会变黑。 - RyanM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接