【问题标题】:Dynamically assign a data source to a dynamically generated wpf combox将数据源动态分配给动态生成的 wpf 组合框
【发布时间】:2016-08-23 05:19:18
【问题描述】:

我在 WPF 中动态生成一个组合框,现在,我想用 xaml 资源文件中的动态值填充组合框,组合框中要填充的数据存在于两个不同的 xaml 资源文件中,我想根据用户在应用程序中选择的语言填充组合框。所以,这里的“ItemsSource”属性应该是动态的,取决于选择的语言

我正在尝试使用“SetResourceReference”

cmbCtrl = new ComboBox();
((ComboBox)cmbCtrl).SetResourceReference(ComboBox.ItemsSourceProperty, "to be assigned");

cmbCtrl.DisplayMemberPath = "Value";
cmbCtrl.SelectedValuePath = "Key";
cmbCtrl.ItemsSource = //should be dynamic based on the language selected
cmbCtrl.SelectedIndex = 0;

另外,希望您对如何将组合框中的数据放入 xaml 资源文件提出建议

任何建议都非常感谢,在此先感谢!

【问题讨论】:

  • 将 ItemsSource 绑定到 ObservableCollection<string> 并在每次语言更改时清除列表并填充它。
  • Cmb.ItemsSource = this.FindResource(...) as SomeCollection.

标签: wpf combobox


【解决方案1】:

您必须创建一个类,它将您的 combobox 项目保存为字符串。

public class StringCollection : ObservableCollection<string> { }

然后在您的资源文件中,您可以将该列表填充为这样的资源:

<local:StringCollection x:Key="Language1">
    <sys:String>Item 1</sys:String>
    <sys:String>Item 2</sys:String>
</local:stringCollection>

<local:StringCollection x:Key="Language2">
    <sys:String>Item 1</sys:String>
    <sys:String>Item 2</sys:String>
</local:stringCollection>

一旦您定义了这些资源,您就可以通过在代码中检索这些资源并将它们分配给组合框ItemsSource 属性来轻松填充您的组合框。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-03
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多