将自定义可序列化对象绑定到控件,以便用户和加载/保存首选项

Posted

技术标签:

【中文标题】将自定义可序列化对象绑定到控件,以便用户和加载/保存首选项【英文标题】:Binding a custom serializable object to controls so user and load/save preferences 【发布时间】:2009-02-12 15:51:13 【问题描述】:

好的,因此放弃了使用内置 .NET 配置系统来保存/加载有关每个用户的自定义对象的数据,我已经转向使用可序列化对象。而且,更进一步,我想将它绑定到我的应用程序选项窗口中的控件。

请原谅这个问题的长度,因为它有一些代码块......

一、父对象:

[Serializable]
public class ConnectionSettings

    public List<Connection> Connections  get; set; 

    public ConnectionSettings()
    
        Connections = new List<Connection>();
    

因为将保存多个连接,所以我认为这是存储它们的最简单方法。

Connection 对象的一个​​块:

[Serializable]
public class Connection : NotifyBase

    private string hostName;
    [DisplayName( "Host Name" )]
    public string HostName
    
        get  return hostName; 
        set  SetField( ref hostName, value, "HostName" ); 
    

    /* Other field snipped for your sanity,*/
    /* same format as host name */

    public List<string> Channels  get; set; 

    public Connection()
    
        Channels = new List<string>();
    

要大致了解表单的外观: 我有一个组合框,它将显示所有已保存连接的主机名,当用户选择主机名时,它将使用它们各自的值填充表单上的其他字段。我意识到这不应该那么难,但由于某种原因,我无法让组合框部分工作,而且我想得越多,我不确定如果我知道如何知道要填充哪个特定连接其他控件...

更多信息 问题是,我不确定如何绑定所有需要绑定的东西。我要离开这个example。我希望能够为反序列化 ConnectionSettings (来自文件)中的每个 Connection 对象在组合框中显示主机名,当您选择主机名时,它会填写其余的相关数据到窗体上的其他控件。

非常感谢任何帮助。

【问题讨论】:

我认为您没有明确说明您的要求。你能澄清你的问题吗?这与连环化或组合框有关吗?问题究竟出在哪里?谢谢。 添加了更多信息,希望对您有所帮助。 【参考方案1】:

好的,我想我已经想通了。我将 ConnectionSettings 更改为继承 List,它似乎工作正常。

【讨论】:

以上是关于将自定义可序列化对象绑定到控件,以便用户和加载/保存首选项的主要内容,如果未能解决你的问题,请参考以下文章

为啥委托方法需要将自定义类托管对象上下文的内容保存在委托类托管对象上下文中?

Android将自定义对象从服务传递给活动

将自定义 ValueProviderFactories 添加到 ASP.NET MVC3?

将自定义组件指令绑定到 for 循环中的对象

淘汰组件(不)绑定到新内容

无法将自定义消息从一个控件发送到另一个控件