我有一个带有DataTemplate和UniformGrid的列表框作为ItemspanelTemplate,它显示它应该除了一件事,它忽略了我设置的背景颜色。所以我希望我的Listbox透明。这是我的简单例子
<Window xmlns:local="clr-namespace:ListboxBackground" Background="Red">
<local:MyListbox HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</Window>
<UserControl x:Class="ListboxBackground.MyListbox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<UserControl.Resources>
<DataTemplate x:Key="MyDataTemplate">
<Border Background="Green" Margin="2"/>
</DataTemplate>
</UserControl.Resources>
<ListBox x:Name="Listbox" ItemTemplate="{StaticResource MyDataTemplate}" IsEnabled="False" Background="Transparent">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="4" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="VerticalContentAlignment" Value="Stretch" />
<Setter Property="Padding" Value="0" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
</UserControl>
背后的代码
public partial class MyListbox : UserControl
{
private List<int> foo = new List<int>();
public MyListbox()
{
InitializeComponent();
for (int i = 0; i < 52; i++)
{
foo.Add(i);
}
Listbox.ItemsSource = foo;
}
}
无论我将背景颜色设置为透明在哪里都忽略它。虽然我希望在这种情况下看到红色背景颜色,因为这是主窗口设置的颜色。
任何想法为什么?我查看了各种各样的例子(在样式等设置,但没有一个会起作用,背景总是保持白色)
谢谢
答案 0 :(得分:1)
根据我的评论。您可以更改IsEnabled = true
内Listbox
的{{1}}或添加(UserControl
应始终透明)。
Listbox
答案 1 :(得分:0)
我无法重现你的行为。一切正常。我编辑过的内容:
TextBlock
&#34; MyDataTemplate&#34; {/ li> DataTemplate
添加了值
IsEnabled
属性让我们看一下完整的代码:
<Window.Resources>
<DataTemplate x:Key="MyDataTemplate">
<Border Background="Green" Margin="2">
<TextBlock Text="1"/>
</Border>
</DataTemplate>
</Window.Resources>
<Grid >
<Grid.Background>
<ImageBrush ImageSource="disco-lightball.jpg"/>
</Grid.Background>
<StackPanel>
<ListBox x:Name="Listbox" ItemTemplate="{StaticResource MyDataTemplate}" Background="Transparent">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="4" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="VerticalContentAlignment" Value="Stretch" />
<Setter Property="Padding" Value="0" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
</StackPanel>
</Grid>
我们可以看到: