XML传递参数到UserControl

时间:2012-04-05 12:08:44

标签: c# wpf user-controls

使用WPF应用程序和WPF UserControl。

我有一个在主应用程序中多次使用的usercontrol。 此usercontol中有一个按钮,单击它将显示全局字符串变量Properties.Settings.Default.StringA;的内容(其中“stringA”只是此explenation中的一个示例)

例如,在此全局设置中,我有一个字符串parameterNameA和一个parameterNameB。

我应该在主要应用程序上做这样的事情:

UserController实例1: <local:UserControl1 stringVariable="parameterNameA" />

UserController实例2: <local:UserControl1 stringVariable="parameterNameB" />

在usercontroller中应该得到这样的东西:

public string stringVariable
{
    get 
    {
        return stringVariable; 
    }
    set 
    {
       settingThis = value; 
    }
}

但是这个人用它来制作一个字符串。 但我想要的是让它获得正确的参数Properties.Settings.Default.StringA;,其中“StringA”应该是“parameterNameA”或“parameterNameB”

真的陷入了这一个。有人有什么想法吗?

============================================ =======

编辑1 - 修改问题以便更好地解释

我正在使用WPF应用程序和WPF UserControl。

我有一个UserControl,里面有一个按钮。 点击此按钮将执行:MessageBox.Show(Properties.Settings.Default.messageA);

所以messageA是全局字符串变量之一。

现在我将这个userControl放在aplligation窗口上,通过XML:

<local:UserControl1 stringVariable="messageA" />

但是我没有把它放在那里,我想在应用程序窗口上多次使用它。 但正如您将理解的那样,单击按钮它将始终显示messageA。

所以我在尝试什么: 我想在userControl中添加一些内容,用于定义在调用Properties.Settings.Default.messageA时显示的消息,但对于应用程序窗口中的第二个实例,我不希望它显示messageA,我希望它显示messageB。 所以在应用程序窗口中,我有类似的东西:

<local:UserControl1 stringVariable="messageA" />

<local:UserControl1 stringVariable="messageB" />

因此,在用户控制器中,它应该理解,当设置stringVariable="messageB"时,它应该调用Properties.Settings.Default.messageB而不是Properties.Settings.Default.messageA

我希望我现在解释得更好。

2 个答案:

答案 0 :(得分:0)

如果我理解正确:

为什么不通过构造函数中的参数传递用户控件中Properties.Settings.Default.StringX的内容,将其保存为属性并在任何地方使用它?

答案 1 :(得分:0)

我想我明白你在这里想要什么,但我不确定100%是因为代码中的所有问题。如果我理解正确,您想要使用全局设置的值而不是名称。或者,有一些方法从设置的名称中提取值...

您仍然可以存储设置变量的名称,但您只需使用ConfigurationManager根据键(名称)返回设置。确保包含必要的参考和使用陈述。

public string StringVariable { get; set; }

public string SettingValue
{
    get { return ConfigurationManager.AppSettings[StringVariable]; }
}