如何将我的代码隐藏中的ObservableCollection <t>对象绑定到我的列表框... Silverlight WP7 </t>

时间:2011-01-16 07:36:42

标签: silverlight windows-phone-7

这是我的代码隐藏

public ObservableCollection<BuddyConnectFriendService.FriendStructure>
    FriendList { get; set; } // I want to bind this to my listbox


public Friends() //this is constructor
    {
        InitializeComponent();
        this.DataContext = this; //I think this is what I'm doing is right....:)
    }


<ListBox Height="523" HorizontalAlignment="Left" Margin="0,6,0,0" Name="friendListBox" VerticalAlignment="Top" Width="450">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Name="friendListboxDataItemStackPanel" Orientation="Vertical">
                        <TextBlock Name="friendUsername" FontSize="28" />
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

如何将FriendList绑定到ListBoxFriendList的属性为user.UserName,我想在TextBlock“friendUsername”中显示它。

2 个答案:

答案 0 :(得分:4)

我会像这样更改构造函数:

public Friends() //this is constructor
{
     InitializeComponent();         
     this.DataContext = this.FriendList; 
}

使用像这样的DataTemplate:

<ListBox ItemsSource="{Binding}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                ...
                <TextBlock Text="{Binding user.UserName}"/>
            </Grid>
        </DataTemplate>
     </ListBox.ItemTemplate>
</ListBox> 

答案 1 :(得分:0)

Erno的回答很好而且有效。还有另一种方法可以使用您的方法来获取它。

如果你给了Page / UserControl一个名字(即在根元素中,给它一个Name =“MyPage”属性)。

然后你可以这样做:

<ListBox ItemsSource="{Binding MyPage.FriendList}">

应该有用。

但是,我会将您的FriendList属性放入ViewModel,并将该视图模型用作Page / UserControl的DataContext