2009-04-14 44 views
0

我已經有一個ListView控件綁定到ObservableCollection的項目,並且我已經將它的視圖設置爲綁定到屬性Data的列的GridView。事情似乎沒有問題,但源屬性中的數據根本沒有被渲染。這裏的SCANDATA結構:在GridView列中沒有呈現的ListView項目

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中(例如,行是可選的),但是三列沒有顯示任何內容。 DataContext中的ScanData項目都設置了它們的Port屬性,所以它不應該是在「Port」列中呈現數字嗎?另外兩個屬性在運行時爲空,所以我不期望看到它們。

回答

3

ScanData上的數據必須是屬性,而不是字段。

struct ScanData 
{ 
    public ushort Port {get;set;} 
    public bool? Status{get;set;} 
    public string ServiceName{get;set;} 
} 
相關問題