我读过其他类似标题的问题,我认为这是一个不同的问题。
我有一个数据绑定(bind)组合框。每个项目都有一个“状态”和一个“名称”,显示文本是使用 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>
我得到一个构建错误说
Cannot find the Trigger target 'txtStatus'.
我尝试了其他一些方法(例如使用
x:Name
而不是 Name
)但得到了同样的错误。我在正确的方向吗?我怎样才能解决这个问题?
最佳答案
必须首先声明触发目标。更改顺序,它将起作用。
<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>
关于WPF 数据触发器 "cannot find trigger target",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11253470/