У меня есть элемент управления ListView, привязанный к ObservableCollection элементов, и я установил его представление в GridView со столбцами, привязанными к свойствам Data. Вроде бы все в порядке, но данные в исходных свойствах вообще не отображаются. Вот структура ScanData:
struct ScanData
{
public ushort Port;
public bool? Status;
public string ServiceName;
}
XAML:
<ListView IsSynchronizedWithCurrentItem="True" Width="Auto" Name="_resultsListView" ItemsSource="{Binding}" Height="138">
<ListView.View>
<GridView ScrollViewer.IsDeferredScrollingEnabled="True">
<GridViewColumn Header="Port" Width="50" DisplayMemberBinding="{Binding Path=Port}"/>
<GridViewColumn Header="Status" DisplayMemberBinding="{Binding Path=Status}"/>
<GridViewColumn Header="Service" Width="231" DisplayMemberBinding="{Binding Path=ServiceName}"/>
</GridView>
</ListView.View>
</ListView>
Код (во всяком случае, наиболее важные части):
public partial class AddServerDialog
{
PortScanner _scanner;
ObservableCollection<ScanData> _resultList;
Brush _defaultPortTextBorderBrush;
public AddServerDialog()
{
this.InitializeComponent();
_resultList = new ObservableCollection<ScanData>();
_resultsListView.DataContext = _resultList;
}
// ...
private void _addScanButton_Click(object sender, RoutedEventArgs e)
{
_resultList.Add(_scanner.CreateScan(ushort.Parse(_portText.Text)));
}
}
Когда я нажимаю кнопку, которая вызывает срабатывание _addScanButton_Click, я вижу, что элементы добавляются к отображаемому ListView (например, строки доступны для выбора), но в трех столбцах ничего не отображается. Все элементы ScanData в DataContext имеют установленное свойство Port, поэтому не должны ли они отображать числа в столбце «Порт»? Два других свойства являются нулевыми во время выполнения, поэтому я не ожидаю их увидеть.