Элементы ListView не отображаются в столбцах GridView - PullRequest
0 голосов
/ 14 апреля 2009

У меня есть элемент управления 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, поэтому не следует ли отображать числа в столбце «Port»? Два других свойства имеют нулевое значение во время выполнения, поэтому я не ожидаю их увидеть.

1 Ответ

3 голосов
/ 14 апреля 2009

Данные в ScanData должны быть свойствами, а не полями.

struct ScanData
{
    public ushort Port {get;set;}
    public bool? Status{get;set;}
    public string ServiceName{get;set;}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...