1

コードのバグをあきらめたので、ここに書くことにしました。私は本当に解決策を得ることを願っています。リストボックスに必要なのは、ボタンをクリックすると、データベースからデータを取得してリストボックスにロードすることです。うまくいきました。しかし、wpf スタイルを追加すると、テキスト (右側) とテキスト (左側) の横にある各項目に画像を追加したいため、問題が発生しました。リストボックスの結果は空白ですが、実際にはデータリストがあるようです - 写真を見てください。コードまたは wpf で何か間違ったことをした可能性があります。何が問題なのかわかりません....私のコードを見ていただければ幸いです。あなたの与えられたコードは非常に役に立ちます。どうもありがとう!

WPF:

    <ListBox Name="lstDinner" DisplayMemberPath="Name" Margin="513,85,608,445" Style="{DynamicResource ResourceKey=styleListBox}"/>

WPF スタイル:

 <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;
        }
    }

ここに画像の説明を入力

4

1 に答える 1

1

FoodInformationclass にプロパティが含まれていません: Imageand Name( でこれらのプロパティにバインドしようとしていますDataTemplate)。

FoodInformationコード ビハインドから、プロパティDinnerとクラスの定義を作成できますDinnerImage

class FoodInformation
{
    public string Dinner { get; set; }
    public ImageSource DinnerImage { get; set; }
}

したがって、 andではなく、プロパティDinnerandにバインドする必要があります。DinnerImageImageName

DataTemplate適切なプロパティ名を変更すれば、すべて問題ありません。

<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=DinnerImage }"
                   Stretch="Fill"
                   Height="40"
                   Width="40"></Image>
        </Border>
        <TextBlock Text="{Binding Path=Dinner }"
                   FontWeight="Bold"
                   Grid.Column="1"
                   Grid.Row="0"></TextBlock>
    </Grid>
</DataTemplate>
于 2013-07-10T19:17:23.513 に答える