ListView DynamicResource - PullRequest
       9

ListView DynamicResource

0 голосов
/ 08 февраля 2011

При попытке использовать DynamicResource в качестве ItemsSource для ListView мое приложение выдает ошибку:

Окно должно быть корнем дерева. Невозможно добавить Window как дочерний элемент Visual.

Если я должен был удалить ItemsSource и оставить код в покое, то я не получу сообщение об ошибке, и отобразится пустой ListView.

Мой ListView, расположенный в моем Window.XAML, выглядит следующим образом:

<ListView Grid.Column="1" Grid.Row="8" Grid.RowSpan="4" ItemsSource="{DynamicResource tasksResponsibilitiesCollection}">
                        <ListView.View>
                            <GridView AllowsColumnReorder="True">
                                <GridViewColumn DisplayMemberBinding="{Binding tasksResponsibilitiesName}" Header="Tasks/Responsibility" Width="150" />
                                <GridViewColumn Header="Member Responsible" Width="120" />
                                <GridViewColumn Header="Qualifications" Width="110" />
                            </GridView>
                        </ListView.View>
                    </ListView>

ItemsSource - это ObservableCollection, определенная в коде. Я использовал пример MSDN (http://msdn.microsoft.com/en-us/library/ms747048.aspx) в качестве руководства по созданию ListView

Как мне сделать ставку ObservableCollection на ListView? Нужно ли где-то определять ресурс в Window.XAML?

Если есть что-то, что я не охватил, пожалуйста, дайте мне знать.

Я ценю вашу помощь,

Мэтт

1 Ответ

1 голос
/ 08 февраля 2011

Если вы ObservableCollection определены как свойство в коде позади окна, тогда вы можете использовать привязку данных для установки ItemsSource, например:

<ListView Grid.Column="1" Grid.Row="8" Grid.RowSpan="4" ItemsSource="{Binding Path=tasksResponsibilitiesCollection, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}">
    <ListView.View>
        <GridView AllowsColumnReorder="True">
            <GridViewColumn DisplayMemberBinding="{Binding tasksResponsibilitiesName}" Header="Tasks/Responsibility" Width="150" />
            <GridViewColumn Header="Member Responsible" Width="120" />
            <GridViewColumn Header="Qualifications" Width="110" />
        </GridView>
    </ListView.View>
</ListView>

Обратите внимание, что tasksResponsibilitiesCollection должно быть общедоступной собственностью в вашем оконном коде.

...