Не удается найти имя состояния с DataStateBehavior - PullRequest
0 голосов
/ 29 ноября 2018

Я работаю над приложением, которое было разработано 3 года назад и с тех пор не обновлялось.Я столкнулся с ошибкой, но не могу выяснить, откуда она взялась ... Она работала, когда была выпущена первая версия, а предыдущего разработчика там уже нет.

Она находится в шаблоне данных для listBox

Мы используем эти два пространства имен:

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 »для типа« Сетка ». Проверьте, существует ли состояние и доступно ли оно в этом контексте».(Или на французском языке, оригинальное сообщение: «Невозможно решить проблему с именем« EditState »в типе« Сетка ». Проверка подлинности и доступность возможны как часть контекста».)

Я убедился, что он ищет состояние именно на этой самой сетке, а не где-то еще.Из того, что я собрал, он должен изучить все visualStateGroups, а затем все visualState, чтобы проверить, существует ли EditState ... что он и делает.

Есть идеи, что не так?

...