Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF列表框,复选框显示为空,动态添加_C#_Wpf_Listbox_Checkbox - Fatal编程技术网

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);
        }
    }
}
...