由于插入了代码,找不到触发器目标

时间:2018-07-25 17:52:17

标签: c# wpf xaml wpf-controls

我遇到了此错误“找不到触发器目标'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中定义它们。

0 个答案:

没有答案