C# ListBox的SelectedIndex处的动态组合框

C# ListBox的SelectedIndex处的动态组合框,c#,wpf,listbox,margin,selectedindex,C#,Wpf,Listbox,Margin,Selectedindex,在WPF应用程序中,我有一个列表框,并与来自Sql的数据绑定。在列表框中还有一个堆栈面板 双击列表框的项目后,我需要在其中放置/添加一个动态组合框 我可以获取列表框的选定索引 int seleteditem = lstbxusername.SelectedIndex; 我创建了动态组合框 System.Windows.Controls.ComboBox cmb = new ComboBox(); cmb.Background = Brushes.Green; 使用

在WPF应用程序中,我有一个列表框,并与来自Sql的数据绑定。在列表框中还有一个堆栈面板

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

我可以获取列表框的选定索引

int seleteditem = lstbxusername.SelectedIndex;
我创建了动态组合框

  System.Windows.Controls.ComboBox cmb = new ComboBox();
            cmb.Background = Brushes.Green;
使用Stackpanel添加组合框

        newstckpnl.Children.Add(cmb);
我的问题是如何在列表框的选定索引中添加动态组合框


这可能吗?非常感谢。

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

var listBox = new ListBox();
var listBoxItem = listBox.SelectedItem as ListBoxItem;
var listBoxItemMargin = listBoxItem.Margin;
当前,您正在向
列表框添加字符串。字符串显然没有边距。为了使上述代码正常工作,您需要将
ListBoxItems
添加到
ListBox
,如下所示

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

我做了一些事情,这对我很有用

我获取列表框的选定索引

int seleteditem = lstbxusername.SelectedIndex;
然后创建组合框

System.Windows.Controls.ComboBox cmb = new ComboBox();
通过使用combobox对象,我将其添加到listbox选定索引中

 lstbxusername.Items.Insert(seleteditem, cmb);

var listBoxItem=listBox.SelectedItem作为listBoxItem在这个区域我得到空值。如果使用
itemsource
填充
ListBox
,则它不会获取seleteditem
SelectedItem
表示项目视图模型。您必须使用
ListBox
ItemContainerGenerator
获取项目的容器,然后获取其
边距
@User6667769您能告诉我们如何将项目添加到
列表框中吗。这样我就可以明白为什么这可能会给您带来问题。@User6667769您的意思是什么,但如何将其设置为特定的变量?关于如何在
列表框
中获取所选项目的边距的问题。如果您知道如何获取项目容器,那么您就知道如何获取其
边距
lstbxusername.ItemContainerGenerator.ContainerFromIndex(selectedindex)从这里我可以获得所选项目的所有属性。但所选项目的边距显示{0,0,0}@请阅读有关MVVM的内容。如果通过绑定设置
ItemsSource
,则不应手动将项目添加到代码隐藏中的
ItemsControl
ListBox
)的
items
集合中。您需要将
ItemsSource
绑定到
ObservableCollection
,并在视图模型中将字符串添加到此集合。另外,您将
ItemsSource
绑定到什么?我得到边距={0,0,0,0},它有什么问题?如果你能更好地描述你的问题,你早就可以得到答案了。现在,你强迫人们问很多问题来澄清你的问题。