Я впервые поигрался с WPF, особенно используя ListView, который я хочу привязать к ObservableCollection, свойству на странице с выделенным кодом.Прямо сейчас я просто пытаюсь понять, как все работает, поэтому я старался не усложнять.К сожалению, я не совсем понимаю, где я ошибаюсь.
Моя страница с выделенным кодом имеет свойство, которое выглядит следующим образом:
public ObservableCollection<Code> Code { get; set; }
У меня есть кнопка наформа, которая запрашивает и заполняет свойство Code.
Класс Code представляет собой простой класс POCO:
public class Code
{
public string Line { get; set; }
}
Я добавил пространство имен в окно XAML:
<Window x:Class="SampleWPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SampleWPF"
Title="MainWindow" Height="350" Width="525"
>
И ListView выглядит следующим образом:
<DockPanel Height="311" HorizontalAlignment="Left" Name="dockPanel1"
VerticalAlignment="Top" Width="182">
<ListView Name="lstCode"
ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Window, AncestorLevel=1}, Path=Code}"
DisplayMemberPath="Line">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Line}" />
</GridView>
</ListView.View>
</ListView>
</DockPanel>
Я также попытался установить DataContext в коде за конструктором, но безуспешно, напр .: * 10101 *
this.DataContext = this;
РЕДАКТИРОВАТЬ:Перемещая эту строку после строки кода, которая создает фиксированные вещи коллекции (наряду с другими предлагаемыми изменениями).
И я также попытался явно установить ItemsSource в коде (в моем обработчике кликов):
this.lstCode.ItemsSource = this.Code;
Я посмотрел несколько примеров, но мне все еще чего-то не хватает (не удивительно).