WPF UserControl 什么时候会触发UnLoaded事件

冬夜 2015-12-17 08:42:58
我将UserControl Add 到Grid的时候会触发Loaded事件 当我Remove的时候并不会UnLoaded事件,如果需要触发UnLoaded 需要怎么做?

从UserControl从Grid Remove的时候会触发什么事件?

谢谢!!
...全文
1553 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunny906 2015-12-19
  • 打赏
  • 举报
回复

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
       
 <i:Interaction.Triggers>
            <i:EventTrigger EventName="Loaded">
                <ei:CallMethodAction TargetObject="{Binding}" MethodName="AirtightTestInit"/>
            </i:EventTrigger>
            <i:EventTrigger EventName="Unloaded">
                <ei:CallMethodAction TargetObject="{Binding}" MethodName="ComDevice_1_Close"/>
            </i:EventTrigger>
 </i:Interaction.Triggers>
冬夜 2015-12-19
  • 打赏
  • 举报
回复
请教下 MVVM模式下 怎么在移除UserControl的时候触发 Unload 事件
sunny906 2015-12-19
  • 打赏
  • 举报
回复
引用 5 楼 jn40105 的回复:
"http://schemas.microsoft.com/expression/2010/interactions" 这个找不到啊 要引用什么呢
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" 要引用下面两个dll,在程序集-->扩展里: Microsoft.Expression.Interactions.dll System.Windows.Interactivity.dll
  • 打赏
  • 举报
回复
宿主父控件被Unload的时候,就会递归地触发自己以及自己的兄弟控件Unload。例如窗体在“正规”卸载时就会触发Unload,从而深度递归地触发所有子控件的Unload。
引用 3 楼 jn40105 的回复:
请教下 MVVM模式下 怎么在移除UserControl的时候触发 Unload 事件
你应该从 VM 的角度去进行逻辑设计,例如捕获 INotifyCollectionChanged, INotifyPropertyChanged 等接口的对象(例如实现了 ObservableCollection<T> 模板类型的对象)所抛出的“修改”事件。 应该从VM角度去设计,而不是去从 V 角度去设计。
冬夜 2015-12-19
  • 打赏
  • 举报
回复
"http://schemas.microsoft.com/expression/2010/interactions" 这个找不到啊 要引用什么呢
  • 打赏
  • 举报
回复
Remove 的时候 是可以触发的。上代码看看
冬夜 2015-12-17
  • 打赏
  • 举报
回复
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:ctl ="clr-namespace:MES.Public_UC"
             xmlns:i ="http://schemas.microsoft.com/expression/2010/interactivity"
             mc:Ignorable="d">

    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Loaded">
            <i:InvokeCommandAction Command="{Binding AirtightTestInit}" />
        </i:EventTrigger>
        <i:EventTrigger EventName="Unloaded">
            <i:InvokeCommandAction Command="{Binding ComDevice_1_Close}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
MVVM 模式下不行

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧