为什么我的ListBoxItem样式会在更改内容时重置?

时间:2014-02-03 19:37:24

标签: c# wpf listbox listboxitem

我有一个包含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 - 转为默认

我必须做什么?

1 个答案:

答案 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的样式设置为新创建的样式。