我有一个ListBox
(或ListView
)我想填充,但我的列表只包含1个这样的项目:(它来自我的Job
类)< / p>
因此ListBox
将有两列,有效1为键,1为值,然后是每行键/值对。
我似乎无法用一个只有1个项目的集合来解决这个问题,而不是很多项目。
编辑: 我已经有了我的Job Class,它是由Linq自动生成的。部分例外代码:
public partial class Job : INotifyPropertyChanging, INotifyPropertyChanged
{
private int _Id;
private string _Hostname;
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", DbType="Int NOT NULL", IsPrimaryKey=true)]
public int Id
{
get
{
return this._Id;
}
set
{
if ((this._Id != value))
{
this.OnIdChanging(value);
this.SendPropertyChanging();
this._Id = value;
this.SendPropertyChanged("Id");
this.OnIdChanged();
}
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Hostname", DbType="NVarChar(50)")]
public string Hostname
{
get
{
return this._Hostname;
}
set
{
if ((this._Hostname != value))
{
this.OnHostnameChanging(value);
this.SendPropertyChanging();
this._Hostname = value;
this.SendPropertyChanged("Hostname");
this.OnHostnameChanged();
}
}
}
}
答案 0 :(得分:1)
我不确定我是否完全理解你的问题,但让我们看看这个答案是否可以帮助你。因此,当我们在ListBox
或类似项目中显示项目集合时,我们通常会声明DataTemplate
来定义我们希望如何呈现数据项。然后,我们将DataTemplate
应用于ListBox.ItemTemplate
属性。
但是,当我们只想显示单个项目时,使用数据集合和某种ItemsControl
毫无意义。相反,我们可以使用相同的DataTemplate
,但只需将其应用于单个ContentControl
即可。因此,ListBox
用于多个项目,ContentControl
用于呈现单个项目。试试这个:
在Resources
:
<DataTemplate x:Key="YourDataTemplate" DataType="{x:Type YourPrefix:YourDataType}">
<!-- Define how you want your object to be rendered here -->
<!-- You can use a Grid or StackPanel to layout your item here -->
</DataTemplate>
然后在XAML中:
<ContentControl Content="{Binding YourSingleItemProperty}"
ContentTemplate="{StaticResource YourDataTemplate}" />
答案 1 :(得分:1)
将项目绑定到ListView
非常简单易行。这只是一个例子,但它应该提供关于如何准确显示所需值的基本想法。
如果您已在XAML中定义ListView
,请执行以下操作:
<ListView Name="listViewJobs">
<ListView.View>
<GridView>
<GridViewColumn Header="Key" DisplayMemberBinding="{Binding Path=JobKey}" />
<GridViewColumn Header="Value" DisplayMemberBinding="{Binding Path=JobValue}" />
</GridView>
</ListView.View>
</ListView>
类Job
具有将ListView
列绑定到的属性(在本例中为JobKey
和JobValue
属性):
public class Job
{
private string jobKey;
private string jobValue;
// Key property that will be displayed
public string JobKey
{
get { return jobKey; }
set { jobKey = value; }
}
// Value property that will be displayed
public string JobValue
{
get { return jobValue; }
set { jobValue = value; }
}
public Job(string jobKey, string jobValue)
{
this.jobKey = jobKey;
this.jobValue = jobValue;
}
}
要在Jobs
中显示ListView
的列表,您需要做的就是:
// Create the new list
List<Job> listJob = new List<Job>();
// Create new Job and add it to the list
Job newJob = new Job("exampleKey", "exampleValue");
listJob.Add(newJob);
// Set the list as the source for our ListView
listViewJobs.ItemsSource = listJob;
Binding将负责将列链接到类中的属性,并显示您添加到源列表的所有项目中的选定值。