C# WPF列表框,复选框显示为空,动态添加
我试图用一系列复选框条目填充列表框,但是,一旦运行列表框下面的代码,列表框中就有可选择的空白条目,即出现一个蓝色条。但是,文本或复选框均不显示C# WPF列表框,复选框显示为空,动态添加,c#,wpf,listbox,checkbox,C#,Wpf,Listbox,Checkbox,我试图用一系列复选框条目填充列表框,但是,一旦运行列表框下面的代码,列表框中就有可选择的空白条目,即出现一个蓝色条。但是,文本或复选框均不显示 for (int num = 1; num <= 10; num++) { CheckBox checkBox = new CheckBox(); checkBox.Text = "sheet" + num.ToString(); checkBox.Name = "checkbox" + num.ToString(); t
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);
}
for(int num=1;num处理此问题的最佳方法是创建一个数据列表——在您的例子中,是一个数字列表(或字符串列表(sheet1、sheet2等)。然后,您可以将该数字列表分配给listbox.ItemsSource。在listbox的XAML中,设置ItemTemplate以包含复选框,并将数字绑定到复选框的文本。处理此问题的最佳方法是创建数据列表——在您的情况下,创建数字列表(或字符串列表(sheet1、sheet2等)。然后,您可以将该数字列表分配给listbox.ItemsSource。在listbox的XAML中,设置ItemTemplate以包含复选框,并将数字绑定到复选框的文本。尝试更改
checkBox.Text = "sheet" + num.ToString();
到
有了这个改变,我可以成功地使用你的例子。尝试改变
checkBox.Text = "sheet" + num.ToString();
到
有了这个改变,我能够成功地使用您的示例。为了跟进Brian的评论,这里是C#wpf中一个简单复选框列表的概要。这将需要更多代码来处理选中/取消选中框和常规后期交互处理程序。此设置显示了两个对象列表中元素的差异(在别处定义)在复选框列表中
XAML
。。。
...
支持C#代码:
。。。
公共部分类缺少名称窗口:窗口
{
//让您可以在任何地方访问它
公共可观察集合缺少子项{get;set;}
public MissingNamesWindow()
{
//构建我们的集合,以便我们以后可以绑定到它
findmisingchildren();
初始化组件();
//将此窗口的datacontext设置为位于此处的内容
DataContext=this;
}
私有void findmisingchildren()
{
//初始化我们的可观察集合
Missing Children=新的可观察集合();
//在列表A而不是列表B上构建对象列表
列表名称=新列表(MainWindow.ChildNamesFromDB.Exception(
main window.ChildNamesFromDisk.ToList());
//从唯一的对象列表中构建可观察的集合
foreach(名称中的变量名称)
{
缺少子项。添加(名称);
}
}
}
...
希望这能澄清一点。为了跟进Brian的评论,这里是C#wpf中一个简单复选框列表的概要。这将需要更多的代码来处理复选框/取消复选框和一般的后期交互处理程序。此设置显示了复选框列表中两个对象列表(在别处定义)上元素的差异
XAML
。。。
...
支持C#代码:
。。。
公共部分类缺少名称窗口:窗口
{
//让您可以在任何地方访问它
公共可观察集合缺少子项{get;set;}
public MissingNamesWindow()
{
//构建我们的集合,以便我们以后可以绑定到它
findmisingchildren();
初始化组件();
//将此窗口的datacontext设置为位于此处的内容
DataContext=this;
}
私有void findmisingchildren()
{
//初始化我们的可观察集合
Missing Children=新的可观察集合();
//在列表A而不是列表B上构建对象列表
列表名称=新列表(MainWindow.ChildNamesFromDB.Exception(
main window.ChildNamesFromDisk.ToList());
//从唯一的对象列表中构建可观察的集合
foreach(名称中的变量名称)
{
缺少子项。添加(名称);
}
}
}
...
希望这能澄清一点。好主意,我明白你的意思。好主意,我明白你的意思。奇怪的是,似乎没有定义。ContentAh,我想这可能有助于解释它!winforms复选框有一个文本属性(但没有内容),而WPF复选框有一个内容属性(但没有文本)。您似乎在使用winforms复选框。奇怪的是,似乎没有定义。content啊,我想这可能有助于解释它!winforms复选框有一个文本属性(但没有内容),而WPF复选框有一个内容属性(但没有文本)。您似乎在使用winforms复选框。
...
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);
}
}
}
...