2012-06-28 1 views
1

Я читал другие вопросы с похожими заголовками, и я думаю, что это другой вопрос.WPF DataTrigger «не может найти цель запуска»

У меня есть привязка данных привязки. Каждый элемент имеет «статус» и «имя», а отображаемый текст является конкатенацией как с помощью TextBlock с 2 Run. Я хочу выделить «статус» в красном, если это «NotComplete». Вот моя 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> 

Я получил сообщение об ошибке сборки, говоря

Не удается найти цель Trigger 'txtStatus.

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

+0

Вы попробовали x: Имя? – dowhilefor

+0

@ dowhilefor: должен был упомянуть, что я сделал, ту же ошибку. –

ответ

7

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

<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> 
+0

Хотел бы я попробовать ... Спасибо! –