我遇到了此错误“找不到触发器目标'connectStatus'。(该目标必须出现在使用它的任何设置器,触发器或条件之前。)”,我不知道为什么。目标已经在DataTrigger之前定义了,这很奇怪。
<DataTemplate DataType="{x:Type src:ScannedStimulatorItem}">
<src:ScannedItem/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Connected}"
Value="true">
<Setter TargetName="AutomationConnectStatus"
Property="AutomationProperties.ItemStatus"
Value="ConnectionState:true"/>
<Setter TargetName="ConnectStatus" //Error here
Property="Fill"
Value="{StaticResource OnBrush}" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
ScannedItem是放入另一个xaml文件中的大量代码。在此重构之前,我没有收到错误。在此ScannedItem UserControl内部是
<Grid x:Name="LayoutRoot">
// Row and Column definitions
// Lots of xaml code
<TextBlock x:Name="AutomationConnectStatus"
AutomationProperties.AutomationId="{Binding Serial, StringFormat=CONNECT_\{0\}ConnectionStatus_Icon}"
AutomationProperties.ItemStatus="ConnectionState:false">
<InlineUIContainer>
<Ellipse x:Name="ConnectStatus"
Width="12"
Height="12"
Fill="{StaticResource OffBrush}"
/>
</InlineUIContainer>
</TextBlock>
</Grid>
另一个奇怪的发现:AutomationConnectStatus根本没有这个错误(我删除了connectStatus触发器进行检查)。另外,我不认为InlineUIContainer是问题所在,因为我还有其他触发此问题的触发器,但未在InlineUIContainer中定义它们。