C# ListBox的SelectedIndex处的动态组合框
在WPF应用程序中,我有一个列表框,并与来自Sql的数据绑定。在列表框中还有一个堆栈面板 双击列表框的项目后,我需要在其中放置/添加一个动态组合框 我可以获取列表框的选定索引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; 使用
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
,则它不会获取seleteditemSelectedItem
表示项目视图模型。您必须使用ListBox
的ItemContainerGenerator
获取项目的容器,然后获取其边距
@User6667769您能告诉我们如何将项目添加到列表框中吗。这样我就可以明白为什么这可能会给您带来问题。@User6667769您的意思是什么,但如何将其设置为特定的变量?关于如何在列表框
中获取所选项目的边距的问题。如果您知道如何获取项目容器,那么您就知道如何获取其边距lstbxusername.ItemContainerGenerator.ContainerFromIndex(selectedindex)代码>从这里我可以获得所选项目的所有属性。但所选项目的边距显示{0,0,0}@请阅读有关MVVM的内容。如果通过绑定设置ItemsSource
,则不应手动将项目添加到代码隐藏中的ItemsControl
(ListBox
)的items
集合中。您需要将ItemsSource
绑定到ObservableCollection
,并在视图模型中将字符串添加到此集合。另外,您将ItemsSource
绑定到什么?我得到边距={0,0,0,0},它有什么问题?如果你能更好地描述你的问题,你早就可以得到答案了。现在,你强迫人们问很多问题来澄清你的问题。