我正在尝试使用系列复选框条目填充列表框,但是一旦运行列表框下面的代码,其中有空白条目,可以选择,即出现蓝色条。但是,文本或复选框都不会出现。
for (int num = 1; num <= 10; num++)
{
CheckBox checkBox = new CheckBox();
checkBox.Text = "sheet" + num.ToString();
checkBox.Name = "checkbox" + num.ToString();
thelistbox.Items.Add(checkBox);
}
答案 0 :(得分:8)
处理此问题的最佳方法是创建数据列表 - 在您的情况下,数字列表(或字符串列表(sheet1,sheet2等)。然后,您可以将该数字列表分配给列表框.ItemsSource。在列表框的XAML中,设置ItemTemplate以包含CheckBox并将数字绑定到复选框的文本。
答案 1 :(得分:1)
尝试更改
checkBox.Text = "sheet" + num.ToString();
到
checkBox.Content = "sheet" + num.ToString();
通过这项更改,我能够成功使用您的示例。
答案 2 :(得分:1)
要跟进Brian的评论,下面是C#wpf中简单复选框列表的概述。这将需要更多代码来处理检查/取消选中框和一般的交互后处理程序。此设置显示复选框列表中两个对象列表(在别处定义)中元素的差异。
XAML
...
<ListBox Name="MissingNamesList" ItemsSource="{Binding TheMissingChildren}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<CheckBox Content="{Binding Path=Name}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
...
支持C#代码:
...
public partial class MissingNamesWindow : Window
{
// Make this accessible from just about anywhere
public ObservableCollection<ChildName> TheMissingChildren { get; set; }
public MissingNamesWindow()
{
// Build our collection so we can bind to it later
FindMissingChildren();
InitializeComponent();
// Set our datacontext for this window to stuff that lives here
DataContext = this;
}
private void FindMissingChildren()
{
// Initialize our observable collection
TheMissingChildren = new ObservableCollection<ChildName>();
// Build our list of objects on list A but not B
List<ChildName> names = new List<ChildName>(MainWindow.ChildNamesFromDB.Except(
MainWindow.ChildNamesFromDisk).ToList());
// Build observable collection from out unique list of objects
foreach (var name in names)
{
TheMissingChildren.Add(name);
}
}
}
...
希望澄清一点。