我的WPF样式有些麻烦。我有一个ListBox
,其中包含一堆空白(不应该是空白的)标签。在我的XAML中定义如下:
<ListBox Height="auto" Name="ProjectsList" Width="auto" DockPanel.Dock="Top" ItemsSource="{Binding Projects}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="3">
<Label Content="{Binding Path=Name}" Foreground="Black" Height="40" Padding="7" VerticalAlignment="Center" ScrollViewer.HorizontalScrollBarVisibility="Hidden" Name="ProjectName" />
<Label Content="{Binding Path=TaskCount}" Foreground="Gray" Width="25" Name="ProjectTaskCount" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Projects
是ObservableCollection
,其中填充了Project
结构(我定义的结构),这些结构是在数据库查询后创建的,用于获取相应的数据。我可以单步执行代码,看到查询返回正常,并查看结构填充并添加到集合中。我也知道它正在填充ListBox
因为我可以选择其中的空白项目并突出显示。但是没有应该有的文字。
Project
属性Name
为string
,TaskCount
为int
。
这是Project
定义
public struct Project
{
public Int64 Id;
public string Name;
public string Description;
public bool HasDueDate;
public DateTime DueDate;
public Int64 UserId;
public int TaskCount;
}
问题是:为什么文字没有出现?
答案 0 :(得分:3)
您只需绑定到公共属性即可。我只看到结构上的字段。和其他人说的那样:实现INotifyPropertyChanged并正确地提升它
答案 1 :(得分:1)
您应该将INotifyPropertyChanged实现到您的业务对象。哪个会使用PropertyChanged回调直接通知属性对UI的更改..但是我不确定你是否使用它来绑定ListBox ....
http://www.codeproject.com/Articles/165368/WPF-MVVM-Quick-Start-Tutorial
http://www.codeproject.com/Articles/81484/A-Practical-Quick-start-Tutorial-on-MVVM-in-WPF