无法编辑ListBox-Foreground

时间:2016-11-14 15:12:19

标签: c# wpf mvvm listbox

首先关闭所有人:抱歉英语不好,我通常说德语。

目前我正在开展一个大型项目,我必须填写一个列表框,我将其用作“导航控件”,并使用字典中的字符串。

在这个项目的旧版本中,我手动将字符串放在列表框中,然后我可以将列表框的前景从黑色设置为白色,但在当前版本中不再可能。

   <StackPanel Grid.Column="0" Orientation="Vertical">
        <TextBlock Text=" Navigation" FontSize="16" Margin="10" Foreground="White"/>

        <ListBox HorizontalAlignment="Stretch" 
            VerticalAlignment="Stretch" 
            HorizontalContentAlignment="Left"
            Margin="10"
            MaxHeight="150"
            BorderBrush="Black"
            Style="{DynamicResource MetroListBox}"
            SelectedItem="{Binding SelectedTemplate}" Background="#002B2B2B" 
            ItemsSource="{x:Static models:TemplateRepository.TemplateDictionary}" 
            Foreground="White"
            DisplayMemberPath="Value">
        </ListBox>
    </StackPanel>

有人可以向我解释为什么这不起作用吗?

1 个答案:

答案 0 :(得分:0)

如果没有更多信息,例如ListBox项目的模板是什么,很难猜到? 例如,您可以在参考资料中使用以下模板:

<DataTemplate  DataType="{x:Type local:SomeClass}">
    <Grid DataContext="{Binding}">
        <TextBlock Text="{Binding Path=Name}" Foreground="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ListBox}}" />
    </Grid>
</DataTemplate>

在这种情况下,将Foreground设置为某个值会影响项目,例如:

<ListBox x:Name="listBox" ItemsSource="{Binding}"  Foreground="Red">

另一方面,如果Items的Foreground在datatemplate中设置为某个固定值,那么在ListBox中设置它将无效。