【问题标题】:XML pass parameter into UserControlXML 将参数传递到 UserControl
【发布时间】:2012-04-06 03:09:40
【问题描述】:

使用 WPF 应用程序和 WPF UserControl。

我有一个多次在主应用程序中的用户控件。 这个用户控件中有一个按钮,点击它会显示一个全局字符串变量Properties.Settings.Default.StringA;的内容(其中“stringA”只是这个例子中的一个例子)

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

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

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

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

在用户控制器中应该是这样的:

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

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

真的卡在这个了。有人有什么想法吗?

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

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

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

我有一个用户控件,里面有一个按钮。 点击此按钮即可:MessageBox.Show(Properties.Settings.Default.messageA);

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

现在我通过 XML 将这个 userControl 放在应用窗口上:

<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

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

【问题讨论】:

  • 我已经阅读了这个问题大约 4 次,但仍然令人困惑。请修改它并更清楚地说明问题所在。
  • 好的,编辑添加更多信息。我真的希望它现在更清楚。

标签: c# wpf user-controls


【解决方案1】:

如果我理解正确:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多