Если вы укажете только путь привязки, механизм привязки будет пытаться перемещаться по пути, начиная с текущего DataContext
, поэтому ItemsSource="{Binding Path=Names}"
работает не так, есть много разных вещей, которые следует иметь в виду, особенно при выполненииболее сложные вещи.
Самая важная статья, которую должен прочитать каждый новичок в DataBinding, - Обзор привязки данных в MSDN
Чтобы вернуться к привязкеесли вы хотите сделать это полностью в XAML, вы также можете сделать это, вам просто нужно как-то сделать Window вашим источником, либо напрямую, либо относительно, либо указав его как DataContext.
1- Прямая ссылка:
<Window Name="Window"
...>
<Grid>
<ListBox ...
ItemsSource="{Binding ElementName=Window, Path=Names}"
.../>
</Grid>
</Window>
2 - Относительная ссылка
<Grid>
<ListBox ...
ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=Names}"
.../>
</Grid>
3 - Настройка DataContext
<Window ...
DataContext="{Binding RelativeSource={RelativeSource Mode=Self}}">
<Grid>
<ListBox ...
ItemsSource="{Binding Path=Names}"
.../>
</Grid>
</Window>