2

リストに入力する方法をテストするために使用している次のコードがあります。アイテムはリストに存在しますが、表示されていません。

public MyFellows()
    {
        InitializeComponent();
        List<Fellow> fellowList = new List<Fellow>();
        for (int i = 0; i < 2; i++)
        {
            Fellow fellow = new Fellow();
            fellow.Name = "Danish " + i;
            fellow.Email = "Email " + i;
            fellowList.Add(fellow);
        }
        lbFellows.ItemsSource = null;
        lbFellows.ItemsSource = fellowList;
    }

    private class Fellow
    {
        public string Name { get; set; }
        public string Email { get; set; }
    }

次のxamlが使用されています

<ListBox x:Name="lbFellows" Margin="8,8,8,177">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Vertical" Width="Auto" Height="300">
                        <TextBlock x:Name="tbName" Width="Auto" FontSize="22" FontWeight="Bold" Text="{Binding Name}" />
                        <TextBlock x:Name="tbEmail" Width="Auto" FontSize="22" Height="Auto" Text="{Binding Email}"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
4

1 に答える 1

1

まず、WPF はプロパティにのみバインドし、プロパティはオブジェクトの DataContext に存在する必要があります。

次のようにコードを変更する必要があります。

public List<Fellow> fellowList { get; set; }
// Constructor
public MainPage()
{
    InitializeComponent();

    fellowList = new List<Fellow>();
    for (int i = 0; i < 2; i++)
    {
        Fellow fellow = new Fellow();
        fellow.Name = "Danish " + i;
        fellow.Email = "Email " + i;
        fellowList.Add(fellow);
    }
    this.DataContext = this;
    //lbFellows.ItemsSource = null;
    lbFellows.ItemsSource = fellowList;
}

public class Fellow
{
    public string Name { get; set; }
    public string Email { get; set; }
}
于 2013-02-15T18:14:16.053 に答える