WPF ListView绑定到自定义类

WPF ListView绑定到自定义类,wpf,xaml,listview,binding,Wpf,Xaml,Listview,Binding,我的问题看起来很简单。但我试图实现它的方式有点复杂。我已经实现了一个单例模式,为了使用一些全局数据,我有类联系人历史记录,我想将它的一些属性绑定到ListView->GridView->GridViewColumn。我有一张要装订的单子。我已经阅读了一些教程并试图实现它们,但是我的XAML代码似乎存在一些问题,因为当我绑定listobject时,它可以解析它的路径。似乎我没有包括一些正确的东西。以下是所需的代码 独生子女班 class Singleton {

我的问题看起来很简单。但我试图实现它的方式有点复杂。我已经实现了一个单例模式,为了使用一些全局数据,我有类联系人历史记录,我想将它的一些属性绑定到ListView->GridView->GridViewColumn。我有一张要装订的单子。我已经阅读了一些教程并试图实现它们,但是我的XAML代码似乎存在一些问题,因为当我绑定listobject时,它可以解析它的路径。似乎我没有包括一些正确的东西。以下是所需的代码

独生子女班

     class Singleton
        {
            private static Singleton instance = new Singleton();
            public List<Contacts> ContactList ;

            public SQLiteConnectionStringBuilder builder;
            public SqLiteProvider _db;
            public DataHelper _helper;
            public DataTable DataTable_Contacts;
            public DataTable DataTable_ContactHistory;
            public List<String> Contact_Names;
            public ListBox ListBox_names;
            public int Contact_Index;
            public int ContactHistory_Index;

            private Singleton()
            {
                ContactList = new List<Contacts>();

                builder = new SQLiteConnectionStringBuilder();
                builder.DataSource = Util.GetCurrentDirectory() + "TestDatabases\\DatabaseAccessLayerSqlLite.db";
                _db = new SqLiteProvider();
                _db.ConnectionString = builder.ConnectionString;
                _helper = new DataHelper(_db);
                DataTable_Contacts = new DataTable();
                DataTable_ContactHistory = new DataTable();
                Contact_Names = new List<string>();
            }
       .
       .
}
类单例
{
私有静态单例实例=新单例();
公开名单联系人名单;
公共SQLiteConnectionStringBuilder生成器;
公共SqLiteProvider_db;
公共数据助手"helper ;;
公共数据表\u联系人;
公共数据表DataTable_ContactHistory;
公开列出联系人姓名;
公共列表框列表框名称;
公共联系指数;
公共历史指数;
私人单身人士()
{
ContactList=新列表();
builder=new-SQLiteConnectionStringBuilder();
builder.DataSource=Util.GetCurrentDirectory()+“TestDatabases\\DatabaseAccessLayerSqlLite.db”;
_db=新的SqLiteProvider();
_db.ConnectionString=builder.ConnectionString;
_helper=新的DataHelper(_db);
DataTable_Contacts=新DataTable();
DataTable_ContactHistory=新DataTable();
联系人姓名=新列表();
}
.
.
}
Xaml代码

<Window x:Class="NET_Data_Access_Layer_Demo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:themes="clr-namespace:WPF.Themes;assembly=WPF.Themes"
        xmlns="clr-namespace:NET_Data_Access_Layer_Demo.Properties"

        Title="Customer Contact Manager" Height="535" Width="702" Loaded="Window_Loaded" Activated="Window_Activated">
        <GroupBox Header="History" Height="230" HorizontalAlignment="Left" Margin="182,252,0,0" Name="groupBox_history" VerticalAlignment="Top" Width="487">
            <Grid>
                <Button Content="Edit" Height="23" HorizontalAlignment="Left" Margin="164,163,0,0" Name="button_edithistory" VerticalAlignment="Top" Width="75" Click="button_edithistory_Click" IsEnabled="False" />
                <Button Content="Delete" Height="23" HorizontalAlignment="Left" Margin="269,163,0,0" Name="button_deletehistory" VerticalAlignment="Top" Width="75" IsEnabled="False" Click="button_deletehistory_Click" />
                <Button Height="23" HorizontalAlignment="Left" Margin="62,163,0,0" Name="button_addhistory" VerticalAlignment="Top" Width="75" Click="button_addhistory_Click" Content="Add" IsEnabled="False" />
                <ListView IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding ContactHistoryList}" Height="129" HorizontalAlignment="Left" Margin="33,19,0,0" Name="listView_history" VerticalAlignment="Top" Width="419">
                    <ListView.View>
                        <GridView>
                            <GridViewColumn Header="Date"  Width="80" DisplayMemberBinding="{Binding ContactHistory_Date}" />
                            <GridViewColumn Header="Type"  Width="80" DisplayMemberBinding="{Binding ContactHistory_Type}" />
                            <GridViewColumn Header="Note"  Width="300" DisplayMemberBinding="{Binding ContactHistory_Note}" />
                        </GridView>
                    </ListView.View>
                </ListView>
            </Grid>
        </GroupBox>
.
.
.
</window>

.
.
.
我正在正确地分配datacontext,但我的直觉是xaml无法理解我提供的所有绑定引用,我可能缺少一些自定义类引用或类似的内容。如果有人能在这方面帮助我,我将不胜感激

问候 Umair

(您将数据上下文分配到哪里?分配给什么?)

代码中没有名为
ContactHistoryList
的属性。这意味着您的项目源不能正确绑定,首先,除非数据上下文中涉及到一些您没有解释的内容

此外,不可能使用WPF绑定到公共字段。您需要将字段包装在公共属性中并绑定到这些属性。

(您在哪里分配datacontext?分配给什么?)

代码中没有名为
ContactHistoryList
的属性。这意味着您的项目源不能正确绑定,首先,除非数据上下文中涉及到一些您没有解释的内容


此外,不可能使用WPF绑定到公共字段。您需要将字段包装在公共属性中,并绑定到这些属性。

从listview中删除绑定参数

按代码分配listview.itemssource。 否则 使用x:Key=“ContactHistoryList”将ObjectCollection添加到资源

再见

试试这个:













从listview中删除绑定参数

按代码分配listview.itemssource。 否则 使用x:Key=“ContactHistoryList”将ObjectCollection添加到资源

再见

试试这个:













您确定数据上下文设置正确吗?因为从这里我看不到任何名为“ContactHistoryList”的属性(这就是你设置ListView的ItemsSource的原因。你如何绑定它?谢谢Tenshiko,伙计,你刚刚解决了我的问题。我没有设置ItemsSource。我花了将近两个小时的时间来解决。再次感谢伙计。你确定datacontext设置正确吗?因为从这里我看不到任何名为“ContactHistoryList”的属性)(这就是你设置ListView的ItemsSource的内容。你如何绑定它?谢谢Tenshiko,伙计,你刚刚解决了我的问题。我没有设置ItemsSource。我花了将近两个小时的时间来解决。再次感谢伙计。但是这与各个列如何对应。比如类的哪个属性应该绑定到哪个GridView列表视图的列,但这如何对应于单个列。例如,类的哪个属性应该绑定到列表视图的哪个GridViewColumn噢,对不起!我只是在做一些实验,并将代码放在文章中。ContactHistoryList是Singleton类的列表变量。就datacontext而言,在列表视图所在的MainWindow.xaml.cs文件我使用的是这个.DataContext=Singleton.GetInstance()(包含ContactHistoryList的Singleton实例),ContactHistoryList是一个公共字段。我应该如何将其包装为公共属性。先生,我感谢您的帮助