我放弃了我的代码错误,所以我决定写这里。我真的希望得到一个解决方案。我想要的列表框是:当我点击按钮时,它将从数据库中检索数据,然后将其加载到列表框中。它工作正常。但是当我添加wpf样式时,它开始出现问题,因为我想将图像添加到文本旁边的每个项目中 - 图像(右侧)和文本(左侧)。列表框中的结果是空白的,但实际上似乎有一个数据列表 - 请查看图片。我可能在我的代码或wpf中做错了。我不确定是什么问题....如果你能查看我的代码,我将不胜感激。您给出的代码将非常有用。非常感谢!
WPF:
<ListBox Name="lstDinner" DisplayMemberPath="Name" Margin="513,85,608,445" Style="{DynamicResource ResourceKey=styleListBox}"/>
WPF STYLE:
<DataTemplate x:Key="templateListBoxItem">
<Grid Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Border Grid.Column="0"
Grid.Row="0"
Grid.RowSpan="2"
Margin="0,0,10,0">
<Image Source="{Binding Path=Image}"
Stretch="Fill"
Height="40"
Width="40"></Image>
</Border>
<TextBlock Text="{Binding Path=Name}"
FontWeight="Bold"
Grid.Column="1"
Grid.Row="0"></TextBlock>
<TextBlock Text="{Binding Path=About}"
Grid.Column="1"
Grid.Row="1"></TextBlock>
</Grid>
</DataTemplate>
<Style x:Key="styleListBox" TargetType="{x:Type ListBox}">
<Setter Property="ItemTemplate" Value="{StaticResource ResourceKey=templateListBoxItem}"></Setter>
</Style>
C#:
private void Button_Click(object sender, RoutedEventArgs e)
{
_dinnerExtractor = new DinnerExtractor();
const int oneDay = 1;
_databaseDinnerList = new ObservableCollection<FoodInformation>(_dinnerExtractor.GetDinnerDays(oneDay));
if (_databaseDinnerList != null)
{
foreach (var list in _databaseDinnerList)
{
lstDinner.Items.Add(new FoodInformation { Dinner = list.Dinner, DinnerImage = list.DinnerImage});
}
//lstDinner.ItemsSource = _databaseDinnerList;
}
}
答案 0 :(得分:1)
FoodInformation
类不包含属性:Image
和Name
(您正尝试在DataTemplate
中绑定这些属性)。
从代码隐藏中我们可以创建具有属性FoodInformation
和Dinner
的{{1}}类的定义:
DinnerImage
所以你应该绑定到属性class FoodInformation
{
public string Dinner { get; set; }
public ImageSource DinnerImage { get; set; }
}
和Dinner
,而不是绑定到DinnerImage
和Image
。
如果更改Name
适当的属性名称,一切都会正常。
DataTemplate