复选框列表框

时间:2016-08-18 13:09:56

标签: c# wpf xaml checkbox listbox

我在这里找到了一个如何实现ListBox复选框的简短解决方案: http://merill.net/2009/10/wpf-checked-listbox/

不幸的是我无法让它发挥作用。 我按照上面网站上的步骤操作,我还添加了一个按钮,这样当我点击它时就会填充一个列表。这是我的代码:

    public class CsvFile
    {       
        public string Name { get; set; }
        public bool IsChecked { get; set; }
        public List<CsvLine> Lines = new List<CsvLine>();

        public CsvFile(string name)
        {
            Name = name;
        }
    }


private void Button_Click_1(object sender, RoutedEventArgs e)
{
    var files = System.IO.Directory.GetFiles(Settings.Directory, "*.csv");

    foreach (var file in files)
            {
                string fileName = System.IO.Path.GetFileNameWithoutExtension(file);
                Settings.FilesList.Add(new CsvFile(fileName));
                FilesListListBox.Items.Add(fileName);                
            }
}

public static class Settings
{
   public static List<CsvFile> FilesList = new List<CsvFile>();
   public static Directory = @"c:\";
} 

这是我的ListBox的XAML:

<ListBox x:Name="FilesListListBox" ItemsSource="{Binding Settings.FilesList}" RenderTransformOrigin="0.507,0.492" Margin="359,111,24,83" >
                <ListBox.ItemTemplate>
                    <HierarchicalDataTemplate>
                        <CheckBox Content="{Binding Name}" IsChecked="{Binding IsChecked}"/>
                    </HierarchicalDataTemplate>
                </ListBox.ItemTemplate>
</ListBox>

说实话我不知道它应该如何工作,我没有任何XAML和WPF的经验,所以我无法找出什么是错的,虽然我觉得我有问题我将项目添加到ListBox的部分。

我希望有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

绑定不像C#那样工作。 Settings.FilesList根本不访问静态类类Settings,它会尝试在当前DataContext上找到属性SettingsHierarchicalDataTemplate也没有意义,因为数据不是分层的。

阅读data binding overviewdata templating overview,而不是货物崇拜节目。还要了解调试绑定,您的代码肯定会导致绑定错误,这些错误在输出窗口中可见。