c#和wpf危机与空白列表框项目

时间:2013-07-10 19:03:35

标签: c# wpf listbox listboxitems

我放弃了我的代码错误,所以我决定写这里。我真的希望得到一个解决方案。我想要的列表框是:当我点击按钮时,它将从数据库中检索数据,然后将其加载到列表框中。它工作正常。但是当我添加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;
        }
    }

enter image description here

1 个答案:

答案 0 :(得分:1)

FoodInformation类不包含属性:ImageName(您正尝试在DataTemplate中绑定这些属性)。

从代码隐藏中我们可以创建具有属性FoodInformationDinner的{​​{1}}类的定义:

DinnerImage

所以你应该绑定到属性class FoodInformation { public string Dinner { get; set; } public ImageSource DinnerImage { get; set; } } Dinner,而不是绑定到DinnerImageImage

如果更改Name适当的属性名称,一切都会正常。

DataTemplate