我有一个包含2个列表框项目的列表框:
<ListBox Name="Monday" HorizontalAlignment="Left" Height="65.125" Margin="78,45.625,0,0" VerticalAlignment="Top" Width="139" Style="{DynamicResource monday}" MouseUp="Monday_MouseUp">
<ListBoxItem Name="MondayLB1" Content="24" HorizontalAlignment="Center" Margin="0,20,0,0" FontSize="20" Height="22" Foreground="White" Focusable="False">
</ListBoxItem>
<ListBoxItem Content="Февраль" HorizontalAlignment="Center" VerticalAlignment="Bottom" Foreground="White" Focusable="False">
</ListBoxItem>
</ListBox>
当我在这样的代码中更改listboxitem内容时:
listik[tmp].Items[0] = localDateTime.Day.ToString();
我的listboxitems的样式重置 - fontsizes,fontforeground,aligment - 转为默认
我必须做什么?
答案 0 :(得分:0)
由于您正在编写程序代码,并且很难不重复使用您轻松拥有的任何样式,我建议您阅读有关DataBinding
的更多信息。但是为了你的问题,这里发生了什么。
您重置listbox
项的样式的原因是因为您覆盖了ListBox
的实际项目,并为其指定了string
的值,以便输出列表框中只有string
值,其中没有任何内容,然后将其转换为内部的正常Textblock
控件。
listik[tmp].Items[0] = localDateTime.Day.ToString();
将其更改为此
Monday.Items[0] = new ListBoxItem()
{
Content = localDateTime.Day.ToString(),
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Bottom,
Foreground = new SolidColorBrush(Colors.White),
Height= 22,
Focusable = false
};
或者您可以为style
定义listboxitem
,然后将新的ListBoxItem的样式设置为新创建的样式。