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