WPF Binding Path = / не работает? - PullRequest
3 голосов
/ 07 мая 2010

Я настроил DataContext так:

<Window.DataContext>
    <c:DownloadManager />
</Window.DataContext>

Где DownloadManager равно Enumerable<DownloadItem>. Затем я установил DataGrid так:

<DataGrid Name="dataGrid1" ItemsSource="{Binding Path=/}" ...

Так что в нем должны быть перечислены все элементы загрузки, верно? Так что я должен быть в состоянии установить мои столбцы как:

<DataGridTextColumn Binding="{Binding Path=Uri, Mode=OneWay}"

Где Uri является собственностью DownloadItem. Но это не похоже на это. В редакторе визуальных свойств он не распознает Uri как допустимое свойство, поэтому я предполагаю, что я делаю что-то не так.

Раньше это работало, когда я привязывал сетку данных к Values, но затем я взял это перечислимое из DownloadManager и сделал себя перечислимым. Как мне это исправить?

PS: Под "не работает" я имею в виду, что в нем нет элементов. Я добавил некоторые в конструктор DM, поэтому он не должен быть пустым.

Ответы [ 3 ]

7 голосов
/ 07 мая 2010

Попробуйте ItemsSource="{Binding}". Этого должно быть достаточно.

5 голосов
/ 07 мая 2010

В ответ на вопрос ОП о том, почему {Binding} работает, но {Binding Path = /} не работает, я добавляю следующую информацию в качестве ответа, чтобы уточнить разницу.

Следующая информация взята из Обзор привязки данных MSDN> Связывание с коллекциями :

Указатели текущего элемента

Представления также поддерживают понятие текущий товар Вы можете перемещаться по объекты в виде коллекции. Как вы перемещаетесь, вы перемещаете объект указатель, который позволяет получить объект, который существует при этом конкретное место в коллекции. Для примера см. Как: Навигация Через объекты в данных CollectionView .

Поскольку WPF привязывается только к коллекции используя вид (либо вид, который вы указать или коллекцию по умолчанию вид), все привязки к коллекциям иметь текущий указатель элемента. когда привязка к виду, косая черта ("/") символ в значении Path обозначает текущий элемент представления. в В следующем примере контекст данных представление коллекции. Первая строка привязывается к коллекции. Второй линия привязывается к текущему элементу в коллекция. Третья строка связана с Описание свойства объекта текущий элемент в коллекции.

<Button Content="{Binding }" />
<Button Content="{Binding Path=/}" />
<Button Content="{Binding Path=/Description}" />
0 голосов
/ 07 мая 2010

В качестве альтернативы ответа Данко, я обнаружил статические ресурсы!(Я нуб WPF)

<Window x:Class="ImageGetGUI.MainWindow"
    ...
    <Window.Resources>
        <c:DownloadManager x:Key="dm"/>
    </Window.Resources>
    ...
    <DataGrid Name="dataGrid1" ItemsSource="{StaticResource dm}" ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...