WPF ListBox自定义样式

时间:2018-07-04 13:21:47

标签: wpf xaml

我有一个带有自定义布局的ListBox,用于在Grid中设置的项目。我已将样式设置为网格中的静态资源,以定义文本块的前景色,但它未绑定到我的视图模型。如果我将该值指定为标准颜色,则效果很好。而且所有数据都正确绑定,我丢失了什么?

           <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid HorizontalAlignment="Stretch" >
                        <Grid.Resources>
                            <Style TargetType="TextBlock" x:Key="HeaderForeground">
                                <Setter Property="Foreground"  Value="{Binding Path=ScreenConfig.TimeColor,Mode=OneWay, NotifyOnTargetUpdated=True}" />
                            </Style>
                        </Grid.Resources>

                        <TextBlock Text="{Binding Path=Time}" Style="{StaticResource HeaderForeground}" />

1 个答案:

答案 0 :(得分:0)

如果ScreenConfig是视图模型的属性,则可以使用RelativeSource绑定到它:

<Style TargetType="TextBlock" x:Key="HeaderForeground">
    <Setter Property="Foreground" 
            Value="{Binding Path=DataContext.ScreenConfig.TimeColor, RelativeSource={RelativeSource AncestorType=ListBox}}" />
</Style>

DataContext中某个项目的ListBoxListBox的{​​{1}}中的当前项目,这就是绑定不起作用的原因。