Silverlight MVVM, связывающий ListBox - PullRequest
       6

Silverlight MVVM, связывающий ListBox

0 голосов
/ 15 декабря 2010

Использование 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 голосов
/ 15 декабря 2010

Полагаю, вы путаете двигатель привязки. Если вы собираетесь использовать 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.

0 голосов
/ 15 декабря 2010

Я думаю, вам нужно связать ItemsSource из ListBox с ObservableCollection или IEnumerable из ForumViewModel с, а не только с одним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...