2017-06-21 85 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);