【问题标题】:WP7 -- Context Menu Forces Black Background for ListboxWP7 - 上下文菜单强制列表框为黑色背景
【发布时间】:2011-07-27 01:03:22
【问题描述】:

这可能是一个简单的...我有一个嵌入了 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>

谢谢

更新

我还没有弄清楚为什么当上下文菜单出现时整个列表框变黑。我已经将我能想到的所有东西都设置为透明画笔。

【问题讨论】:

  • 您实际上还没有设置列表框背景,所以它不应该是黑色(或白色,取决于主题)吗?
  • 感谢您的建议,但我尝试将透明背景应用于列表框和其中包含的每个项目,但黑色背景仍然显示。上下文菜单是否有某种设置可以以这种方式影响其目标?
  • 我看到这个并想'我写了这个吗?目前有完全相同的问题。
  • @RyanM 你能在这方面取得任何进展吗?
  • @willmel 我仍在努力解决这个问题。在解决此问题之前,我无法发布我的应用程序。这非常令人沮丧。我已经尝试将项目模板、项目容器模板、项目面板模板和列表框样式上的所有画笔更改为透明...列表框仍然变黑。我得出的结论是,它必须与列表框中定义的上下文菜单有关,而不是与项目模板中的上下文菜单有关。问题是,在我的设计中,内容菜单不能在项目模板中。

标签: silverlight xaml windows-phone-7 silverlight-3.0 windows-phone


【解决方案1】:

我通过打开工具包(下载源代码: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),
                };

祝你好运!

【讨论】:

  • 谢谢。它应该可以解决问题。我从没想过编辑工具包。光滑。
【解决方案2】:

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

因此,将背景颜色设置为黑色 (0),将前景色设置为白色 (16777215)。违反直觉但它有效的是 MS Access 2002。

【讨论】:

    【解决方案3】:

    没有看到您正在使用的模板,我不能肯定地说,但您可能已经硬编码了背景值,但没有考虑列表项的不同状态,并且正在显示默认状态颜色/值

    【讨论】:

    • 嗯...我编辑了列表框的项目容器样式并将每个状态的背景画笔设置为无,问题仍然存在。即使列表框中只有一个元素,当我长按并出现上下文菜单时,整个列表框背景也会变黑。
    猜你喜欢
    • 2011-11-28
    • 2012-01-04
    • 2020-08-14
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2017-04-23
    • 1970-01-01
    相关资源
    最近更新 更多