Silverlight MVVM绑定一个ListBox

时间:2010-12-15 13:12:34

标签: silverlight mvvm

使用Silverlight 4 / MVVM。

我正在尝试将ViewModel绑定到带有自定义模板的列表框,但数据未显示。如果我设置DisplayMemberPath属性,我已设法获取原始数据。如果我删除此属性并尝试绑定到文本块,则不显示任何内容。这是XAML

 <ListBox Height='200'
             HorizontalAlignment='Left'
             Margin='10,10,0,0'
             Name='lstForumTopics'
             VerticalAlignment='Top'
             Width='200'
             DataContext='{Binding Path=ForumTopics,Source={StaticResource ForumViewModel}}'
             ItemsSource='{Binding Path=ForumTopics,Source={StaticResource ForumViewModel}}'>
        <ListBox.ItemTemplate>

            <DataTemplate>
                <StackPanel Orientation='Vertical'>
                    <TextBlock Text='{Binding ForumTopicText,Source={StaticResource ForumViewModel}}'></TextBlock>
                    <TextBlock Text='{Binding PostCount,Source={StaticResource ForumViewModel}}'></TextBlock>
                </StackPanel>
            </DataTemplate>

        </ListBox.ItemTemplate>
        <ListBox.Background>
            <LinearGradientBrush EndPoint='0.5,1'
                                 StartPoint='0.5,0'>
                <GradientStop Color='#FFDCE2E5'
                              Offset='1' />
                <GradientStop Color='White'
                              Offset='0' />
            </LinearGradientBrush>
        </ListBox.Background>
    </ListBox>

2 个答案:

答案 0 :(得分:0)

我认为您需要将ItemsSource的{​​{1}}绑定到ListBoxObservableCollection IEnumerable,而不仅仅是ForumViewModel。< / p>

答案 1 :(得分:0)

我相信你会混淆Binding引擎。如果你打算使用StaticResource试试......

DataContext="{Binding Source={StaticResource ForumViewModel}}"
ItemsSource="{Binding Path=ForumTopics}"

<TextBlock Text="{Binding Path=ForumTopicText}" />
<TextBlock Text="{Binding Path=PostCount}" />

控件有一个DataContext,用于保存其他属性将绑定到的对象。 ItemsSource只需要知道要绑定的DataContext对象的属性名称。最后,DataTemplate为项目源中的每个对象设置了一个DataContext,因此它们只需要绑定到ItemsSource中对象的属性名称。