none
error template的问题, 显示一个图标在控件的右边,然后让这个图标不断的闪烁, 应该怎么实现呢? RRS feed

  • 问题

  •  <Setter Property="Validation.ErrorTemplate">
                    <Setter.Value>
                        <ControlTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <AdornedElementPlaceholder x:Name="MyAdorner" />
                                    <Image Grid.Column="1" Source="/XTSS.Client.Framework;component/Images/valid_info.png" Stretch="None"
                                      ToolTip="{Binding ElementName=MyAdorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}" ></Image>
                                </StackPanel>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>

    怎么让这个image的Opacity不断从0到1, 再从1到0呢?
    2011年1月4日 7:51

答案

  • 永乐,

    你好!就我所知,像这样实现你的需求是可行的。

    关于资源泄露方面的问题,你写了这样的动画后,如果不去手动清理资源,GC会负责回收掉这部分的资源。在WPF程序中,动画会占用一定的资源,如果不能及时处理,会造成一定的资源浪费。我建议你阅读这篇文章来检查自己WPF程序的性能,如果你发现自己的程序存在内存泄露问题,那么你需要对它们进行手动回收。

      例如,假设要删除一个StoryBorad,可以在Unload事件中使用StoryBorad的Remove方法,例如下面的例子,

       <EventTrigger RoutedEvent="Page.Unloaded" >
        <EventTrigger.Actions>
         <RemoveStoryboard BeginStoryboardName="myBeginStoryboard" />
        </EventTrigger.Actions>
       </EventTrigger>
    
    

    请参考这篇文章以获得更多关于WPF性能方面的信息,http://msdn.microsoft.com/zh-cn/library/aa970683.aspx

    希望这些信息能对你有所帮助!


    Yves Zhang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年1月7日 21:19
    版主

全部回复

  •  <Setter Property="Validation.ErrorTemplate">
                    <Setter.Value>
                        <ControlTemplate>
                           
                                <StackPanel Orientation="Horizontal">
                                    <AdornedElementPlaceholder x:Name="MyAdorner" />
                                    <Image  Name="imgInfo"   Grid.Column="1" Source="/XTSS.Client.Framework;component/Images/valid_info.png" Stretch="None"
                                      ToolTip="{Binding ElementName=MyAdorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}" ></Image>
                                </StackPanel>
                            <ControlTemplate.Triggers>
                                <Trigger Property="Visibility" Value="Visible">
                                    <Trigger.EnterActions>
                                        <BeginStoryboard>
                                            <Storyboard RepeatBehavior="Forever" AutoReverse="True">
                                                <DoubleAnimation 
                    Storyboard.TargetName="imgInfo"
                    Storyboard.TargetProperty="Opacity"
                    From="0" To="1" Duration="0:0:0.5" />
                                            </Storyboard>
                                        </BeginStoryboard>
                                    </Trigger.EnterActions>


                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>

    瞎乱写实现了效果, 但不知道会不会有资源泄露方面的问题
    请教大家一下
    如果用户输入正确后, 这个error是消失了, 那么是否动画资源什么的也都会自动清理掉呢?还是会继续在后台运行着?
    这么写没问题吧?

    2011年1月4日 8:29
  • 永乐,

    你好!就我所知,像这样实现你的需求是可行的。

    关于资源泄露方面的问题,你写了这样的动画后,如果不去手动清理资源,GC会负责回收掉这部分的资源。在WPF程序中,动画会占用一定的资源,如果不能及时处理,会造成一定的资源浪费。我建议你阅读这篇文章来检查自己WPF程序的性能,如果你发现自己的程序存在内存泄露问题,那么你需要对它们进行手动回收。

      例如,假设要删除一个StoryBorad,可以在Unload事件中使用StoryBorad的Remove方法,例如下面的例子,

       <EventTrigger RoutedEvent="Page.Unloaded" >
        <EventTrigger.Actions>
         <RemoveStoryboard BeginStoryboardName="myBeginStoryboard" />
        </EventTrigger.Actions>
       </EventTrigger>
    
    

    请参考这篇文章以获得更多关于WPF性能方面的信息,http://msdn.microsoft.com/zh-cn/library/aa970683.aspx

    希望这些信息能对你有所帮助!


    Yves Zhang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年1月7日 21:19
    版主