我无法从Listbox.triggers的位置访问名称“LeftButton”和“右键”

时间:2011-05-30 14:00:59

标签: .net wpf xaml triggers

<GroupBox BorderThickness="0" Grid.Row="1" Header="Members" Style="{StaticResource CenteredHeaderGroupBoxStyle}">
     <GroupBox.HeaderTemplate>
         <DataTemplate>
             <Border>
                <Grid HorizontalAlignment="Center">
                  <ToggleButton Name="LButton" Content="Members" Style="{StaticResource TabL}" />
                  <ToggleButton Name="RButton" Content="Groups" Style="{StaticResource TabR}" />
                </Grid>
              </Border>
          </DataTemplate>
     </GroupBox.HeaderTemplate>    
     <GroupItem>
      <Border>
      <ListBox Name="GroupMemberList" ItemsSource="{Binding Path=MembersoftheCase}">
           <ListBox.Triggers>
               <Trigger SourceName="LButton" Property="IsChecked" Value="True">
                    <Setter Property="ListBox.ItemsSource" Value="{Binding Path=MembersoftheCase}"/>
                    <Setter Property="ListBox.ItemTemplate" Value="{StaticResource MListTemplate}"/>
               </Trigger>
               <Trigger SourceName="RButton" Property="IsChecked" Value="True">
                    <Setter Property="ListBox.ItemsSource" Value="{Binding Path=GroupsoftheCase}"/>
                    <Setter Property="ListBox.ItemTemplate" Value="{StaticResource GListTemplate}"/>
               </Trigger>
      </ListBox.Triggers>
   </ListBox>
</Border>

 

我在编译时遇到异常,因为此错误导致Designer未加载

  

属性'SourceName'不代表'Trigger'的有效目标,因为找不到名为'LButton'的元素。确保在任何使用它的Setter,Triggers或Conditions之前声明目标。

我也尝试将触发器置于按钮本身,将GroupmembersList作为目标

然后找不到TargetName

F1 F1

1 个答案:

答案 0 :(得分:0)

对象超出范围,来自the documentation

  

您可以将此属性设置为应用触发器集合(此触发器所属的集合)范围内的任何元素的名称。这通常是包含此Trigger的模板中的命名元素。

     

您可以使用x:Name Directive语法命名对象。

如果要触发异物,请使用DataTrigger。 (使用ListBox.Style.Triggers而不是直接触发器。)