“ImageBrush”图像无法加载时隐藏元素

时间:2014-11-17 20:15:58

标签: xaml silverlight windows-phone-8 windows-phone

我正在使用带有ImageBrush的OpacityMask,并且想要在图像无法加载的情况下隐藏元素。我尝试使用EventTrigger,但这是

        <Rectangle x:Name="imageRoot"
                    HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                    Fill="{StaticResource PhoneForegroundBrush}"
                    >
            <Rectangle.OpacityMask>
                <ImageBrush ImageSource="{Binding ImagePath}" Stretch="Uniform">
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="ImageFailed">
                            <ei:ChangePropertyAction PropertyName="Visibility"
                                                     TargetName="imageRoot">
                                <ei:ChangePropertyAction.Value>
                                    <Visibility>Collapsed</Visibility>
                                </ei:ChangePropertyAction.Value>
                            </ei:ChangePropertyAction>
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </ImageBrush>
            </Rectangle.OpacityMask>
        </Rectangle>

这似乎只是默默地失败:没有编译时错误,运行时也没有绑定错误,但元素不会崩溃。

1 个答案:

答案 0 :(得分:1)

由于某种原因,“TargetName = imageRoot”无法将操作绑定到元素。但是,使用TargetObject="{Binding ElementName=imageRoot}"确实有效。