WPF DataTrigger не может найти цель триггера

Я читал другие вопросы с похожими заголовками, и я думаю, что это другой вопрос.

У меня есть поле со списком с привязкой к данным. Каждый элемент имеет «статус» и «имя», а отображаемый текст представляет собой конкатенацию обоих с использованием TextBlock с 2 Run. Я хочу выделить часть «статуса» красным, если она «Не завершена». Вот мой XAML:

<ComboBox ItemsSource="{Binding Results}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding Status}" Value="NotComplete">
                    <Setter TargetName="txtStatus" Property="Foreground" Value="Red" />
                </DataTrigger>
            </DataTemplate.Triggers>
            <TextBlock>
                <Run Text="{Binding Status}" Name="txtStatus"/>
                <Run Text="{Binding Name" />
            </TextBlock>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

Я получил сообщение об ошибке сборки

Не удается найти цель триггера «txtStatus».

Я попробовал еще несколько вещей (например, использовал x:Name вместо Name), но получил ту же ошибку. Я на правильном пути? Как я могу это исправить?


person NS.X.    schedule 28.06.2012    source источник
comment
@dowhilefor: должен был упомянуть, что я сделал, та же ошибка.   -  person NS.X.    schedule 29.06.2012


Ответы (1)


Цель триггера должна быть объявлена ​​первой. Измените порядок и все заработает.

<DataTemplate>
    <TextBlock>
        <Run Text="{Binding Status}" Name="txtStatus" />
        <Run Text="{Binding Name}" />
    </TextBlock>
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding Status}" Value="NotComplete">
            <Setter TargetName="txtStatus" Property="Foreground" Value="Red" />
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>
person LPL    schedule 28.06.2012