部署

时间:2016-12-01 01:44:12

标签: c# wpf wpf-controls

在使用WPF项目的发布版本时,我收到以下错误。 该错误与我拥有的ListView有关。 对于这个Listview /我在部分

中使用Blend FluidMoveBehavior
<ListView x:Name="SearchListBox" Margin="4,100,4,4"
              ItemsSource="{Binding Source={StaticResource AppsCollectionViewSource}}"
              BorderBrush="{x:Null}"
              ScrollViewer.VerticalScrollBarVisibility="Disabled"
              ScrollViewer.HorizontalScrollBarVisibility="Auto"
              ScrollViewer.CanContentScroll="True" >
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Vertical">
                <i:Interaction.Behaviors>
                    <ei:FluidMoveBehavior AppliesTo="Children" Duration="0:0:0.5">
                        <ei:FluidMoveBehavior.EaseY>
                            <QuadraticEase EasingMode="EaseInOut"/>
                        </ei:FluidMoveBehavior.EaseY>
                        <ei:FluidMoveBehavior.EaseX>
                            <QuadraticEase EasingMode="EaseInOut"/>
                        </ei:FluidMoveBehavior.EaseX>
                    </ei:FluidMoveBehavior>
                </i:Interaction.Behaviors>
            </WrapPanel>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
</ListView>

在UserControl.Resources我有一个Trigger,可以在IsMouseOver时触发动画(缩放)。

<Style TargetType="{x:Type ListViewItem}">

    <Setter Property="Background" Value="Transparent" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ListViewItem}">
                <ContentPresenter />
            </ControlTemplate>
        </Setter.Value>
    </Setter>

    <Setter Property="RenderTransformOrigin" Value="0 0.5"/>
    <Setter Property="RenderTransform">
        <Setter.Value>
            <ScaleTransform ScaleX="1" ScaleY="1"/>
        </Setter.Value>
    </Setter>

    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Trigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation
                            Storyboard.TargetProperty="RenderTransform.ScaleX"
                            To="1.28" Duration="0:0:0.2"/>
                        <DoubleAnimation
                            Storyboard.TargetProperty="RenderTransform.ScaleY"
                            To="1.28" Duration="0:0:0.2"/>
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.EnterActions>
            <Trigger.ExitActions>
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation
                            Storyboard.TargetProperty="RenderTransform.ScaleX"
                            To="1" Duration="0:0:0.2"/>
                        <DoubleAnimation
                            Storyboard.TargetProperty="RenderTransform.ScaleY"
                            To="1" Duration="0:0:0.2"/>
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.ExitActions>
        </Trigger>
    </Style.Triggers>
</Style>

在Debug中没有错误,在执行Release版本时,我有时会在调整Window大小时崩溃应用程序。我把VS连接到了这个过程,我得到了:

无法解析属性路径中的所有属性引用&#39; RenderTransform.ScaleX&#39;。验证适用的对象是否支持属性。

任何想法如何解决这个问题?我没有代码隐藏,所有声明都在XAML中完成。 如果我只使用FluidMoveBehavior或仅使用IsMouseOver,问题就会消失。

谢谢。

更新

我发现如果我调整窗口并将鼠标悬停在ListView内的矩形上,而FluidMoveBehavior仍在动画/重新排序ListView项目,则会出现问题。所以问题似乎出现在Trigger IsMouseOver中(我还通过注释Trigger IsMouseOver代码部分来确认这一点)。 如果FluidMoveBehavior仍然是动画,则可以通过取消IsMouseOver事件来解决该问题。 任何人都知道如何在XAML代码中执行此操作?

0 个答案:

没有答案