我正在开发WPF应用程序。在其中我添加CheckBoxes
到ListBox
以下方式。
foreach (User ls in lst)
{
AddContacts(ls, lstContactList);
}
private void AddContacts(User UserData, ListBox lstbox)
{
try
{
var txtMsgConversation = new CheckBox()
{
Padding = new Thickness(1),
IsEnabled = true,
//IsReadOnly = true,
Background = Brushes.Transparent,
Foreground = Brushes.White,
Width = 180,
Height = 30,
VerticalAlignment = VerticalAlignment.Top,
VerticalContentAlignment = VerticalAlignment.Top,
Content = UserData.Name, //+ "\n" + UserData.ContactNo,
Margin = new Thickness(10, 10, 10, 10)
};
var SpConversation = new StackPanel() { Orientation = Orientation.Horizontal };
SpConversation.Children.Add(txtMsgConversation);
var item = new ListBoxItem()
{
Content = SpConversation,
Uid = UserData.Id.ToString(CultureInfo.InvariantCulture),
Background = Brushes.Black,
Foreground = Brushes.White,
BorderThickness = new Thickness(1),
BorderBrush = Brushes.Gray
};
item.Tag = UserData;
lstbox.Items.Add(item);
}
catch (Exception ex)
{
//Need to log Exception
}
}
现在我需要从ListBox
中获取选中的项目。我如何在这里进行,我尝试了下面的代码,返回null,
CheckBox chkBox = lstContactList.SelectedItem as CheckBox;
有什么想法?
2条答案
按热度按时间a5g8bdjr1#
在列表框中创建动态多个项的方法不是在代码隐藏中,而是为项创建一个模板,然后将其绑定到项列表。
示例
假设我有一堆段落
List<Passage> Passages { get; set; }
:在我的xaml中,我创建了一个模板并绑定到它
我的四个段落“Alpha”,“Beta”,“Gamma”和“I-25”的结果看起来像这样:
然后,如果我想要所选的项目,例如上面最近选中的
Beta
,我只需枚举所选项目的List。需要在一个列表框中列出不同类型的对象吗?比如从绑定到复合集合或
ObservableCollection<T>
?在这里看到我的答案:
1zmg4dgp2#
谢谢你的回复,它帮助我找到了问题的答案。我唯一要添加的细节是使用'Window.DataContext'将结果绑定到List。