ListBox背景颜色(XAML/WinRT/Metro)

b.p*_*ell 14 xaml microsoft-metro windows-8 windows-runtime

我正在尝试更改WinRT页面(XAML)上"ListBox"的背景颜色.当我使用"背景"属性时,它会在控件没有焦点时更改背景的方式.当它获得焦点时,它会变为白色,我无法弄清楚如何覆盖它.

我的问题是,如果强制选择/有焦点,如何强制ListBox的背景始终为灰色?

XAML#1:

    <ListBox x:Name="ListBoxMenu" Background="LightGray" Grid.Row="0" Grid.Column="0" Margin="0,0,0,0">
        <ListBoxItem>Menu Item 1</ListBoxItem>
        <ListBoxItem>Menu Item 2</ListBoxItem>
        <ListBoxItem>Menu Item 3</ListBoxItem>
    </ListBox>
Run Code Online (Sandbox Code Playgroud)

XAML#2(每个项目也设置):

    <ListBox x:Name="ListBoxMenu" Background="LightGray" Grid.Row="0" Grid.Column="0" Height="124" VerticalAlignment="Top">
        <ListBoxItem Background="LightGray">Menu Item 1</ListBoxItem>
        <ListBoxItem Background="LightGray">Menu Item 2</ListBoxItem>
        <ListBoxItem Background="LightGray">Menu Item 3</ListBoxItem>
    </ListBox>
Run Code Online (Sandbox Code Playgroud)

具有灰色背景的ListBox,当它没有焦点时

ListBox,在获得焦点时将背景重置为白色

作为临时解决方案,我将ListBox设置为仅硬编码高度,然后使用该列上的边框用LightGray填充剩余的空间.我真的想总是在ListBox上设置背景颜色,这可能吗?

Lon*_*eng 6

您可以在XAML资源文件中放置一些颜色笔刷覆盖以覆盖默认的ListBox控件模板颜色.

<SolidColorBrush x:Key="ListBoxBackgroundThemeBrush" Color="Transparent" />
<SolidColorBrush x:Key="ListBoxFocusBackgroundThemeBrush" Color="Transparent" />
Run Code Online (Sandbox Code Playgroud)


Rob*_*zik 5

使用Visual Studio Blend 2012并编辑ListBox ItemTemplate或它的模板,它将在XAML中创建一个硬拷贝,您可以在其中编辑它的属性.