动态地将数据源分配给动态生成的wpf combox

时间:2016-08-23 05:19:19

标签: wpf combobox

我在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资源文件的建议

任何建议都表示赞赏,提前谢谢!

1 个答案:

答案 0 :(得分:0)

您必须创建一个将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属性,轻松填充ComboBox。