2017-06-21 71 views
-1

在WPF应用程序中,我有一个ListBox并绑定了来自Sql的数据。并且在列表框中还有一个堆栈面板。ListBox的SelectedIndex上的动态组合框

一旦我双击列表框中的项目,我需要放置/添加一个动态组合框。

我可以得到ListBox的选定索引。

int seleteditem = lstbxusername.SelectedIndex; 

和我创建的动态组合框

System.Windows.Controls.ComboBox cmb = new ComboBox(); 
      cmb.Background = Brushes.Green; 

使用StackPanel中添加一个组合框

 newstckpnl.Children.Add(cmb); 

我的问题是如何在一个表中的选定索引添加一个动态的组合框。

这可能吗?帮助赞赏。

+0

请阅读MVVM。如果通过绑定来设置'ItemsSource',则不应该在代码后面手动将Items添加到'ItemsControl'(在你的情况下为'ListBox')的'Items'集合中。您需要将'ItemsSource'绑定到'ObservableCollection ',并将视图模型中的字符串添加到此集合中。 – Maxim

+0

另外,你将'ItemsSource'绑定到了什么地方? – Maxim

+1

_I get margin = {0,0,0,0} _它有什么问题?如果你更好地描述你的问题,你可以在很久以前得到答案。现在,你迫使人们提出很多问题来清楚你的问题。 – Maxim

回答

0

当然可以。您只需首先从ListBox中取出ListBoxItem,如下所示。

var listBox = new ListBox(); 
var listBoxItem = listBox.SelectedItem as ListBoxItem; 
var listBoxItemMargin = listBoxItem.Margin; 

当前您正在为您的ListBox添加字符串。弦乐显然没有利润。为了使上述代码正常工作,您需要将ListBoxItems添加到您的ListBox中,如下所示。

listBox.Items.Add(new ListBoxItem {Content = dr.GetString(1) }); 
+0

var listBoxItem = listBox.SelectedItem作为ListBoxItem;'在这个区域中我得到空值。它没有得到选择的项目 – User6667769

+0

'SelectedItem'代表项目视图模型,以防'ItemsSource'用于填充'ListBox'。您必须使用'ListBox'的ItemContainerGenerator'来获取item的容器,然后取其''Margin'。 – Maxim

+0

@ User6667769你能告诉我们你是如何将你的项目添加到'Listbox'的。这样我就能明白为什么这可能会导致你的问题。 – Ralt

0

我做了一些事情,它为我工作!

我得到一个列表框

int seleteditem = lstbxusername.SelectedIndex; 

然后创建组合框

System.Windows.Controls.ComboBox cmb = new ComboBox(); 

的选定索引通过使用组合框对象,我增加它在列表框中选择指数

lstbxusername.Items.Insert(seleteditem, cmb);