我正在开发3年前开发的应用程序,此后一直未更新。我遇到了一个错误,但找不到它的来源...当第一个版本发布并且以前的开发人员不在这里时,它就起作用了。
它在listBox的dataTemplate中
我们正在使用这两个名称空间:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
这是模板:
<DataTemplate x:Key="EditableSelectionDataTemplate">
<Grid x:Name="grid" Height="{DynamicResource ListBoxItemHeight}" d:DesignWidth="150">
<i:Interaction.Behaviors>
<ei:DataStateBehavior Binding="{Binding Mode=OneWay}"
Value="{Binding DataContext.EditionEntity, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}"
TrueState="EditState"
FalseState="NormalState"/>
</i:Interaction.Behaviors>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="Common">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0:0:0.2"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="EditState">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="NormalGrid">
<DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Collapsed}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="EditGrid">
<DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="NormalState">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="EditGrid">
<DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="EditGrid">
<DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Collapsed}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid x:Name="NormalGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="60" />
</Grid.ColumnDefinitions>
<!-- Some stuff -->
</Grid>
<Grid x:Name="EditGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<!-- some other stuff -->
</Grid>
在尝试找到状态EditState或NormalState中的任何状态之前,该行为都可以正常工作。它创建一个异常,内容如下: “在类型“网格”上找不到状态“ EditState”。请检查状态是否存在以及在此上下文中是否可访问。” (或以法语显示,原始消息:“在类型«Grid»中无法进行麻烦的编辑状态«EditState»。存在可访问性,并且可以在partir de ce上下文中访问它。”)
我确保它正在这个网格上而不是其他地方寻找状态。 根据我的收集,它应该查看所有visualStateGroups,然后查看所有visualState,以检查EditState是否存在...确实如此。
有什么想法吗?