首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在卸载前获得FrameworkElement属性

如何在卸载前获得FrameworkElement属性
EN

Stack Overflow用户
提问于 2010-10-11 19:16:46
回答 1查看 1K关注 0票数 1

它需要实现UI设置系统-从持久存储中加载/保存UI元素的一些属性(用户在运行时可以修改这些属性)。例如:

  • DevExpress网格控件--列的宽度、可见性、汇总区域等(此控件有一组方法对,如RestoreLayoutFrom/SaveLayoutTo,但SaveLayoutToStream(Xml)在grid.Unloaded处理程序中不工作--当网格与PresentationSource断开连接时)
  • 网格行/列,其宽度/高度可由用户通过GridSplitter进行调整
  • 相当大的弹出控件

在加载/初始化/等控件之后,可以很容易地从设置存储中设置控件属性,但是如何捕捉控件卸载前的时刻(当控件仍然保存在可视树中)以便检索它们的设置以进行保存?

简短描述

我打算创建单例- UISettingsManager,它内部有一个字典,其中包含一对元素Uid、元素设置数据。在可视化容器(窗口,UserControl)中,这个管理器可以以如下方式使用:

代码语言:javascript
复制
public partial class PageHeader : UserControl
{
    public PageHeader()
    {
        InitializeComponent();

        UISettingsManager.RestoreSettings(myGridControl);
        UISettingsManager.RestoreSettings(myPopup);
    }
}

myGridControl & myPopup具有唯一的Uid(在应用程序范围内),因此UISettingsManager可以从内部字典中检索它们的设置并将其应用于控件;当然,UISettingsManager知道如何处理一些不同类型的控件。

但是,当存储控件设置的时机合适时,哪个容器是窗口还是UserControl?

EN

回答 1

Stack Overflow用户

发布于 2010-10-11 19:45:55

我会使用窗口的正在关闭事件。

代码语言:javascript
复制
public class MyWindow : Window
{
    public MyWindow()
    {
        this.Closing += new System.ComponentModel.CancelEventHandler(MyWindow_Closing);
    }

    void MyWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        // Save what I want to here
    }
}

这将是最安全的赌注,因为你总有一天会关闭窗口。

但是,可能有其他选项,包括用户控件的卸载事件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3909242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档