WPF ListBox Пользовательский стиль - PullRequest
0 голосов
/ 04 июля 2018

У меня есть ListBox с пользовательским макетом для элементов, установленных в сетке. Я установил стиль в качестве статического ресурса в сетке, чтобы определить цвет переднего плана текстового блока, но он не привязывается к моей модели представления. Это работает нормально, если я укажу значение в качестве стандартного цвета. Также все данные привязаны правильно, что мне не хватает?

           <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 голосов
/ 04 июля 2018

Если ScreenConfig является свойством модели представления, вы можете использовать RelativeSource для привязки к нему:

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

DataContext элемента в ListBox является текущим элементом в ListBox ItemsSource, и поэтому ваша привязка не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...