【问题标题】:Silverlight MVVM binding a ListBoxSilverlight MVVM 绑定一个 ListBox
【发布时间】:2010-12-15 13:12:34
【问题描述】:

使用 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>

【问题讨论】:

    标签: silverlight mvvm


    【解决方案1】:

    我相信您对绑定引擎感到困惑。如果您要使用 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 中对象的属性名称。

    【讨论】:

      【解决方案2】:

      我认为您需要将ListBoxItemsSource 绑定到ObservableCollectionForumViewModels 的IEnumerable,而不仅仅是一个。

      【讨论】:

      • 我已经解决了这个问题 - 这是文本块的绑定语法
      猜你喜欢
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 2016-03-16
      • 2011-01-18
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      相关资源
      最近更新 更多