我在列表框中动态创建了一个stackpanels集合。在此stackpanel中包含标签和水平对齐的复选框。
问题是,当我点击一个堆叠面板时,选择是不可读的,因为线条变成深蓝色,而字母保持黑色,所以黑色为蓝色,你什么也看不见。 如何动态更改stackpanel中所选元素的前景色?我动态地说而不是在xml文件中,因为所有这些元素都是从数据库中动态创建的。
我的代码类似于:
foreach (var utilis in item.user)
{
StackPanelWithID ligne = new StackPanelWithID();
ligne.Orientation = Orientation.Horizontal;
ligne.ID = utilis.TRIGRAMME;
ligne.Height = 21;
Label l = new Label();
l.Width = 120;
Label l2 = new Label();
l2.Width = 145;
CheckBox cbEntretien = new CheckBox();
}
contentpresenter无法正常工作......我尝试了多种方式来定位它... 所以,我找到了解决问题的方法...... 在app.xaml:
<Application.Resources>
<Style TargetType="{x:Type ListBoxItem}">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightBlue"/>
</Style.Resources>
</Style>
</Application.Resources>
因此,所选项目的背景更清晰,以便用户仍然可以阅读所选列表框项目的文本。
并且每个listboxitem都会受到关注。
然而......我很想知道如何在列表框中更改所选项目的文字颜色..如果我设法得到答案我会让你联系......
我这样做了......
<ControlTemplate TargetType="ListBoxItem">
<ContentPresenter>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background"
Value="Red"/>
</Trigger>
</ControlTemplate.Triggers>
</ContentPresenter>
</ControlTemplate>
但是stll不工作,它说在ControlTemplate中找不到触发器属性... 我试图在触发器属性之后添加它,但是不能正常工作......
我在App.xaml中尝试过类似的东西: “
<Style x:Key="SimpleListBoxItem" TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background" <!--can't find the text property so try to act on the Background color to set it to a different color than dark blue-->
Value="Red"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>"
并在我的列表框所在的特定xaml文件中:
<ListBox Margin="9,64,8,313" Loaded="lstUtilisateurs_Loaded" Name="lstUtilisateurs" ItemContainerStyle="{StaticResource SimpleListBoxItem}"/>
但是在执行时,列表框中没有任何内容出现,什么都没有......我没有得到它......
答案 0 :(得分:2)
Dunno如果它仍然重要(最后的回答是在2010年3月25日),但对于仍然想知道如何实现这一点的人我这样做了:
在样式部分:
<Style x:Key="myLBStyle" TargetType="{x:Type ListBoxItem}">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/> <!-- makes the background color transparent, removes backcolor border-->
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Red"/> <!-- Sets the textcolor of the selected text to red -->
</Style.Resources>
</Style>
在Listbox中我使用了ItemContainerStyle属性,如下所示:
ItemContainerStyle =“{StaticResource myLBStyle}
我找了一会儿找到,但现在是。希望有人可以使用它!
也很方便:
http://msdn.microsoft.com/en-us/library/ms603164.aspx
最诚挚的问候,
萨姆